Captura de resposta usando o comando SSH [closed]

1

Estou usando sshpass e ssh para enviar um comando para uma caixa do Linux e, em seguida, desconectar. O comando é enviado ok, mas não obtenho a resposta que espero. Notei que, após o login, o host envia 5 linhas em branco e, em seguida, um banner de 5 linhas.

Parece que o comando ssh (ao passar um comando como parâmetro) está retornando apenas a primeira linha em branco. Existe uma maneira de fazer com que ele retorne TODO o texto? (ou aguarde 5 segundos para capturar todo o texto antes de retornar)

O comando se parece com isso e captura a resposta na variável Bash

RESPONSE=$(sshpass .... ssh..... "my command")
    
por TSG 03.03.2017 / 23:11

2 respostas

1

Isso me permitiu capturar a saída do host

user@host /tmp# output=$(ssh login@domain "ls")
login@domain's password:
user@host /tmp# echo $output
file1
file2
file3

Outra solução, possivelmente ainda melhor, pois registra tudo, incluindo banner, não apenas saída:

ssh user@domain |tee /tmp/output

Onde / tmp / output contém o log completo.

    
por 03.03.2017 / 23:33
1

Para capturar a parede, você precisa criar um script de espera:

#!/usr/bin/expect -f
spawn sshpass -p XXX ssh login@domain
expect "$ "
send "ls\r"
expect "$ "
send "exit\r"

e capture a saída assim

OUTPUT=$(expect expectscript)

Você deve usar as chaves ssh.

    
por 04.03.2017 / 00:16

Tags