The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помогите с expeсt'ом"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помогите с expeсt'ом"  
Сообщение от niknik (??) on 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 }
}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Помогите с expeсt'ом"  
Сообщение от Алексей email(??) on 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".

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Помогите с expeсt'ом"  
Сообщение от Алексей email(??) on 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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Помогите с expeсt'ом"  
Сообщение от niknik (??) on 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".

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру