URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7350
[ Назад ]

Исходное сообщение
"Помогите с expeсt'ом"

Отправлено Алексей , 05-Май-08 07:27 
#!/usr/local/bin/expect
set send_slow {1 0.001}
set per1 [lindex [split $argv { }] 0]
spawn telnet $per1
Как дальше задать условие, чтобы при таймауте telnet-сессии скрипт прерывался?


Содержание

Сообщения в этом обсуждении
"Помогите с expeсt'ом"
Отправлено niknik , 05-Май-08 11:14 
>#!/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 }
}


"Помогите с expeсt'ом"
Отправлено Алексей , 06-Май-08 07:15 
>>#!/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".


"Помогите с expeсt'ом"
Отправлено Алексей , 06-Май-08 07:23 


Вот сам скрипт
#!/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


"Помогите с expeсt'ом"
Отправлено niknik , 06-Май-08 11:24 
>Еще вопрос. Каким образом в самом скрипте направить в файл?

set fd [open "file.txt" W+];


expect {
       // записывает в файл выходной буффер при событии connection closed
       "*connection closed" {   set txt $expect_out(buffer);  puts $fd $txt; }
}  

для обрыва соединения лучше использовать expect eof


Например, $per1
>и  "Connection closed".