Script EXPECT simples para executar o comando remoto e o resultado de deslocamento

2

Estou tentando conectar-me a um roteador de rede e executar show status nele.
Atualmente estou usando:
spawn ssh -o StrictHostKeyChecking=no [email protected]
expect " * ? password:*\r"
send -- "secretPassword\r"
sleep 5
send -- "show status\r"
sleep 10
send -- "exit\r"

Ele não funciona, eu fico preso em [email protected]'s password: Eu tentei digitar a senha, mas não funciona, eu recebo:
server1:~# secretPassword
-bash: server1: command not found
server1:~#


O que estou fazendo tão errado aqui .. .

    
por s.mihai 13.01.2011 / 21:54

2 respostas

3

Tente fazer isso assim

#!/usr/bin/expect -f
set timeout 120
spawn ssh -o StrictHostKeyChecking=no [email protected]
expect "*?assword:*"
send -- "secretPassword\r"
sleep 5
send -- "show status\r"
sleep 10
send -- "exit\r"
expect eof

Se o seu dispositivo demorar para responder, você provavelmente precisará definir um tempo limite adequado.

    
por 14.01.2011 / 09:42
2

Primeiro, você deve analisar todo o processo de coleta e rastreamento de informações do roteador usando RANCID em vez de fazer uma solução única .

Para este problema específico, dê uma olhada em autoexpecta para automatizar a criação do seu script esperado. Isso deve dar a você um script de expectativa de trabalho para começar. Para corrigir seu script existente, tente executar o esperado com o argumento -d . Isso mostrará exatamente o que a expectativa está procurando e deverá informar o que está errado na sua expressão de correspondência.

    
por 13.01.2011 / 22:09

Tags