shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] expect + telnet


From: Flavio Junior
Subject: Re: [shell-script] expect + telnet
Date: Tue, 14 Apr 2009 16:25:46 -0300

Um exemplo parecido com o teu, pode te ajudar..
Uso pra criar a regra de nat em um roteador da embratel:

Paste: http://rafb.net/p/2bfyaa19.html

ou


wallygator:~ # cat /scripts/nat-rule.expect
#!/usr/bin/expect -f
spawn telnet 192.168.0.1
expect ".*Type ENTER.*"
send "\r"
expect ".*ption:.*"
send "2"
expect "PROSUL>"
send "enable\r"
expect "PROSUL#"
send "show nat-rules\r"
expect "NAT rule SSH" {
        send "exit\r"
        send "exit\r"
        expect ".*ption:.*"
        send "e"
        expect eof
        send_user "$expect_out(buffer)"
        exit 0
}
expect "PROSUL#" {
        send "configure terminal\r"
        expect "(config)#"
        send "nat-rule SSH tcp any any eq 2200 change-destination-to
192.168.0.2\r"
        expect "(config)#"
        send "interface serial 0\r"
        expect "(config-if-serial0)#"
        send "ip nat SSH in\r"
        send "exit\r"
        send "exit\r"
        send "exit\r"
        send "exit\r"
        expect ".*ption:.*"
        send "e"
        expect eof
        send_user "$expect_out(buffer)"
        exit 0
}


--

Flávio do Carmo Júnior aka waKKu

2009/4/14 Fabiano Caixeta Duarte <address@hidden>:
>
>
> Senhores,
>
> Estou precisando extrair umas informações de um switch. Ele infelizmente não
> retorna estas informações via SNMP (pelo menos que eu saiba). Então resolvi
> fazer um script com expect.
>
> cat get_mactable.exp
>
> #!/usr/bin/expect -f
>
> spawn telnet [lindex $argv 0]
> expect {
> UserName: {
> send sti\r
> expect {
> PassWord: {
> send cnr7pm\r
> expect {
> "#" {
> send "show fdb\r"
> send a
> }
> }
> }
> }
> }
> }
>
> Qual comando devo colocar após o "send a" para que ele jogue na stdin o
> resultado do comando?
>
> Se eu coloco exp_continue após o "send a", ele me retorna o que eu quero. O
> problema é que ele entra em loop, uma vez que ele continua encontrando o
> prompt "#".
>
> Toda ajuda é bem-vinda.
>
> Obrigado!
>
> PS: tudo que acho na net sobre expect + telnet usa o comando interact do
> except. Como eu quero uma solução não-interativa, isto não resolve ;)
>
> 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]