Abra a sessão ssh com título definido na linha de comando

Abra a sessão ssh com título definido na linha de comando

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 userno fooservidor, executa commandlá 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_COMMANDvariá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 ~/.titlescript 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/bashno 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.aarquivo 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

informação relacionada