#!/usr/local/bin/expect
set send_slow {1 0.001}
set per1 [lindex [split $argv { }] 0]
spawn telnet $per1
Как дальше задать условие, чтобы при таймауте telnet-сессии скрипт прерывался?
>#!/usr/local/bin/expect
>set send_slow {1 0.001}
>set per1 [lindex [split $argv { }] 0]
>spawn telnet $per1expect {
"login: " { send " my_login"; }
"password:" { send " my_password"; }
timeout { abort }
}
>>#!/usr/local/bin/expect
>>set send_slow {1 0.001}
>>set per1 [lindex [split $argv { }] 0]
>>spawn telnet $per1
>
>expect {
>"login: " { send " my_login"; }
>"password:" { send " my_password"; }
>timeout { abort }
>}Спасибо. Работает. Только не могу понять, почему не работает в цикле.
####
spawn telnet $per1
####
while {$x < 5} {
expect {
"Passwor*" {send -s "$pass\r"; puts "Pass";}
"Userna*" {send -s "$name\r"; puts "Name";}
"*Connection closed*" {close; puts "Connection closed"; exit}
}
set x [expr {$x + 1}]
}
Еще вопрос. Каким образом в самом скрипте направить в файл? Например, $per1 и "Connection closed".
Вот сам скрипт
#!/usr/local/bin/expect
set name 1111
set pass 1111
set send_slow {1 0.001}
set per1 [lindex [split $argv { }] 0]
spawn telnet $per1
expect {
"User*" {send -s "$name\r"}
"*Connection timed out*" {close; exit}
"*Unable to connect to remote host*" {close; puts "Connection refused"; exit}
}
expect "*password*"
send -s "$pass\r"
expect ">"
send -s "enable\r"
expect "#"
send -s "idle 120\r"
expect "#"
send -s "config\r"
expect "(config)#"
send -s "save configuration\r"
expect "(config)#"
send -s "backup data tftp 192.168.1.1 $per1\r"
expect "(config)#"
send -s "quit\r"
expect "#"
send -s "quit\r"
expect ":"
send -s "y\r"
expect "Connection closed by foreign host."
close
>Еще вопрос. Каким образом в самом скрипте направить в файл?set fd [open "file.txt" W+];
expect {
// записывает в файл выходной буффер при событии connection closed
"*connection closed" { set txt $expect_out(buffer); puts $fd $txt; }
}для обрыва соединения лучше использовать expect eof
Например, $per1
>и "Connection closed".