Como fazer login em um servidor ssh e capturar prompts programaticamente?

1

Estou tentando escrever um script que fará o login em um servidor remoto via ssh, sem abrir um prompt de senha para o usuário (o servidor remoto não está sob meu controle e não permitirá que eu use a chave autenticação).

Normalmente eu apenas passo a senha no comando, e isso funciona bem, mas a cada 3 meses, eles querem que eu mude a senha, para que ela apareça com uma senha, que quebra meu script. Eu tentei capturar o prompt de senha via STDOUT e STDERR, mas ele não está sendo enviado para nenhum deles. Não sei como capturar o prompt ou enviar a resposta de volta.

Como teste, tentei apenas fazer o ssh sem uma senha e obter o mesmo comportamento básico.

ssh [email protected] 2> /dev/null

ainda mostra o prompt de senha, por exemplo,

o mesmo acontece com ssh -T e ssh -t

qualquer dica seria apreciada.

Felicidades

    
por Kem Mason 25.02.2016 / 21:35

1 resposta

1

Use expect ou uma implementação desse tipo em outro idioma (a Wikipedia tem uma lista de estes no presente). expect foi projetado precisamente para esse tipo de tarefa de automação de terminal. A maneira mais rápida de inicializar essa automação pode ser executada nas seguintes linhas:

autoexpect ssh [email protected]

Em seguida, amasse o teclado conforme necessário, saia do ssh e inspecione o arquivo de script resultante.

    
por 26.02.2016 / 16:20