Chame putty / plink para iniciar um script de linux SSH remoto com entrada do usuário

2

Pergunta aparentemente simples, que produz resultados ligeiramente indesejados.

Execute putty para iniciar um script em um servidor linux remoto que requer entrada do usuário

O script remoto faz um read -p "Please enter name" NAME
Eu posso usar plink para executar um script sobre SSH, as seguintes tentativas e problemas são mostrados abaixo: Note que -load ns é para carregar uma sessão que não existe, ou seja, garantir que nenhum padrão seja usado

1 ) plink.exe -load ns <ip_addr> -l <user> -pw <password> <script path/name> Problema) Não permite / mostrar entrada do usuário, ou seja, não é interativo.

2 ) Adicione -t para alocar um pty: -
plink.exe -t -load nc <ip_addr> -l <user> -pw <password> <script path/name> Problema) Ok, agora a entrada do usuário pode ser vista, mas eu recebo Ctrl + H (^ H) quando o backspace é pressionado, ok se o usuário não cometer um erro!

3 ) Use putty em vez de uma sessão salva
putty.exe -load "SavedSession"
Problema) (a) Obtenha uma nova janela aberta, não um biggy, mas não tão bom. (b) a sessão salva não pode ser facilmente movida . (c) Obter prompt de senha, não pode fornecer senha como com plink, Eu sei eu sei, use as teclas, mas esta é uma rede fechada, privada, e é mais fácil não se preocupar com chaves!

Então, idealmente, gostaria que o SSH fosse executado em linha, ou seja, dentro do shell de linha de comando / arquivo de lote em que estou, não solicitar nome de usuário / senha, executar o script linux e permitir prompts e excluir / backspace para trabalhar.

Muito obrigado por quaisquer ideias / soluções antecipadamente.

    
por IanVaughan 27.06.2011 / 12:38

1 resposta

2

Add -t to allocate a pty ... Ok, so now the user input can be seen, but I get Ctrl+H (^H) when backspace is pressed

Faça seu script executar [ -t 0 ] && stty erase ^H e a tecla Backspace deve ser aceita.

Uma solução ainda melhor é usar uma porta do OpenSSH - por exemplo, do Cygwin ou do MinGW - ela fornecerá a emulação completa do terminal como o PuTTY, mas mantenha-a na janela do console. (A ferramenta plink é projetada para transferências de dados brutos de 8 bits.)

Editar: Uma desvantagem do Cygwin pode ser a falta de suporte a IPv6 (se bem me lembro).

Get password prompt, cannot provide password like with plink

[...] but this is a closed, private network, and its easier not to bother with keys!

E ainda assim você tem um problema que a configuração de chaves resolveria:)

(Eu me sentirei mal por dizer isso, mas o PuTTY também aceita -pw .)

    
por 27.06.2011 / 13:14