
Eu tenho um pequeno problema ao executar o putty (na linha de comando) com-margumento. Por favor, ajude-me com isso ou sugira uma maneira melhor, se você conhecer uma :)
O comando (de "Executar"):
putty -ssh user@machine -pw password -m C:\test.txt
Comando "teste.txt":
PROMPT_COMMAND='echo -ne "\033]0;'$( ifconfig | head -2 | tail -1 | awk '{print $2}')'\007"'
O problema:
Ele abre a sessão e depois fecha imediatamente
O que deveria fazer: Abrir sessão ssh na linha de comando com título definido
Obrigado.
Responder1
Eu acredito que você tentou fazer algo semelhante como emesta resposta. Mas o problema é que os comandos de exemplo fornecidos devem ser executados a partir do arquivo no servidor.
Eles não podem ser passados como comando(s) para execução usando a opção -m. Esta mudança de PuTTYé imitaro comportamento do cliente SSH de linha de comando do Linux:
ssh user@foo command
Dessa forma, o ssh registra um user
no foo
servidor, executa command
lá e simplesmente sai. Parece que -m PuTTY está fazendo exatamente a mesma coisa.
Minha sugestão
é preparar um script no servidor remoto e configurar o PuTTY de uma maneira diferente. Primeiro de tudo, você precisa criar um arquivo com os comandos que você gostaria de executar após o login, vamos chamá-lo.title
cat > ~/.title
Depois é só digitar, ou copiar e colar o que precisar ali, depois apertar Ctrl+D. Por enquanto, vamos apenas testar a configuração do título:
echo -ne "\033]0;PuTTY\007"
Você pode até tentar o procedimento acima diretamente no terminal. Se o título da janela do PuTTY não for alterado, é provável que sua distribuição já esteja definidavariável PROMPT_COMMAND padrão. Você pode confirmar isso executando os seguintes comandos no terminal
echo $PROMPT_COMMAND
unset PROMPT_COMMAND
echo -ne "\033]0;PuTTY test\007"
A chave é desativar o valor atual da PROMPT_COMMAND
variável. Então o último comando deve definir o título da janela como PuTTY test
.
Minha solução
que funciona para mim é preparar uma sessão no PuTTY, comCaixa "Comando remoto" na GUIdefinido como:
/bin/bash --rcfile ~/.title
Apenas lembre-se de fornecer o nome desta sessão (por exemplo: SessionName) e pressione o botão "Salvar" na primeira página de configurações do PuTTY, próximo à lista "Sessões salvas" :)
Então você pode iniciar o PuTTY e solicitar que ele carregue esta sessão
putty -load SessionName -l user -pw password
Sim, é triste, mas não existe uma linha de comando equivalente à caixa "Comando remoto" para uma sessão salva. É por isso que é preciso superar todos esses obstáculos :(
Versão TL;DR
Supondo que você execute todas essas etapas corretamente, tudo deverá funcionar bem:
- criar
~/.title
script na máquina remota - prepare uma sessão com o comando remoto que executa o Bash que será executado
~/.title
- diga ao PuTTY para carregar a sessão preparada no início, especificando usuário e senha
Dica profissional
Em vez de especificar senhas em texto não criptografado na linha de comando (e possivelmente em scripts), você deve aprender a usar chaves SSH e executar o 'Pageant' (agente de autenticação PuTTY) na bandeja do Windows.
Responder2
Eu não tenho um ssh para testar agora, mashttp://www.derkeiler.com/Newsgroups/comp.security.ssh/2012-04/msg00005.html
"Se você quiser apenas que a janela fique aberta para você também olhar, coloque sleep 10 no final do seu script para uma espera de 10 segundos. Se você quiser usar o shell, use exec /bin/bash
no final. Shai"
dois outros links que oferecem algumas dicas.
PuTTY: execute um comando remoto após o login e mantenha o shell em execução
Como escolho o que aparece na barra de título do PuTTY do Linux?
Adicionado por barlop
o seguinte não está usando putty, ele usa openssh no cygwin. O a.a
arquivo pode conter ls ou comandos para alterar o prompt. É local.
$ ssh 127.0.0.1 "cat | bash" < a.a
relacionado, veja a resposta que acabei de postar -https://unix.stackexchange.com/questions/87405/how-can-i-execute-local-script-on-remote-machine-and-include-arguments/208952#208952