Estou usando Expect
para automatizar as seguintes tarefas em um switch:
faça login via telnet
peça vizinhos (dispositivos conectados diretamente ao comutador)
salve as informações dos vizinhos em um arquivo de texto.
Verifique se há dispositivos novos ou menos conectados ao switch e informe-os sobre isso.
preencha um banco de dados SQL com essa informação.
Até agora eu codifiquei isto:
#!/usr/bin/expect -f
#!/bin/sh
set DATE [exec date +%F]
spawn ssh -p 22 mypc@localhost
expect "password: "
send "mypassword\r"
expect "$ "
send "telnet 333.222.111.1\r"
expect "Usuario:"
send "User\r"
expect "Password: "
send "this.is.the.pass\r"
expect "*>"
send "show cdp neighbors \r"
log_file -noappend CDP_$DATE.txt
expect "*>"
Tudo vai bem, mas quando eu envio a instrução "show cdp neighbors" manualmente, a fim de obter todos os dispositivos, eu preciso pressionar "Enter" várias vezes, de outra forma algumas informações são deixadas. No script o mesmo acontece, com o código acima eu estou recebendo apenas alguns dispositivos.
Como posso obter o restante das informações? Tentei colocar várias vezes, mas não funcionou.
Nota: Com a instrução log_file -noappend CDP.txt
i obtém o que está no terminal, mas mesmo quando ele supostamente é um gráfico, ele não mantém a estrutura. Existe alguma maneira mais eficiente de obter essa informação?
Obrigado antecipadamente.
Tags bash expect scripting shell-script