Como obter dados na ordem correta do terminal usando Expect

0

Estou usando Expect para automatizar as seguintes tarefas em um switch:

  1. faça login via telnet

  2. peça vizinhos (dispositivos conectados diretamente ao comutador)

  3. salve as informações dos vizinhos em um arquivo de texto.

  4. Verifique se há dispositivos novos ou menos conectados ao switch e informe-os sobre isso.

  5. 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.

    
por Cesar Alejandro Villegas Yepez 26.01.2017 / 17:10

0 respostas