Autoexpecto trava no final do script

1

Eu tenho um script de autoexpecto. Eu modifiquei e funciona muito bem, porém quando terminar de rodar ele trava e eu preciso fazer ctrl + C para pegar meu terminal

[..]
887VA#logout
Connection to 10.255.255.1 closed by remote host.
Connection to 10.255.255.1 closed.
root@blackbox:/etc/myscripts#

^Croot@blackbox:/etc/myscripts# ^C
root@blackbox:/etc/myscripts#

No espaço em branco acima, pressionei entrar muitas vezes

Código

#!/usr/bin/expect -f

set force_conservative 0  ;# set to 1 to force conservative mode even if
                          ;# script wasn't run conservatively originally
if {$force_conservative} {
        set send_slow {1 .1}
        proc send {ignore arg} {
                sleep .1
                exp_send -s -- $arg
        }
}

set timeout -1
spawn $env(SHELL)
match_max 100000


send -- "ssh [email protected]\r"
expect -exact "Password: "
send -- "passwordhere!!!\r"
expect -exact "887VA#"
send -- "show interface vlan 2\r"
expect -exact "Vlan2 is up, line protocol is up \r"
send -- "logout\r"
expect eof
    
por Federi 25.01.2016 / 12:29

1 resposta

0

Você gera um shell, envia um comando ssh, faz coisas e faz logout da sessão ssh. Você nunca sai do shell.

Eu normalmente edito meu script gerado por autoexpecto para não gerar um shell, mas na verdade gero o que quero fazer.

Uma breve reescrita:

#!/usr/bin/expect -f
# default timeout is 10 seconds
spawn ssh [email protected]
expect -exact "Password: "
send -- "passwordhere!!!\r"
expect -exact "887VA#"
send -- "show interface vlan 2\r"
expect -exact "Vlan2 is up, line protocol is up \r"
send -- "logout\r"
expect eof

Com relação à lógica do seu script: o que você deve fazer se o protocolo de linha não for para cima?

    
por 25.01.2016 / 18:38

Tags