четверг, 4 ноября 2010 г.

Использование expect

Старенький adsl модем, иногда обрывает соединение, и теряет adsl. помогает только перезагрузка.
Для автоматизации этого процесса написал скрипт
#!/usr/bin/expect
set host [lrange $argv 0 0]
set user [lrange $argv 1 1]
set pass [lrange $argv 2 2]

spawn telnet $host
expect "login"
send "$user\r"
expect "Password"
send "$pass\r"
sleep 2
 #expect "#"
send "reboot"
send "\r"
exit
Запускать нужно так:
~/rebootmodem ip_адрес_модема логинн пароль

Еще один пример использования expect:
Монтирования альбомов picasa или yandex с авторизацией:



Для начала нужно установить davfs2 (если не установлено)
#!/usr/bin/expect

spawn mount.davfs https://pub.vsyc.com/picasaweb.google.com/Имя_Пользователя /точка/монтирования

sleep 2
expect "Username:"
send "Имя_пользователя_на_vsyc.com\r"
sleep 2
expect "Password:"
sleep 2
send "пароль_vsyc.com\r"
sleep 4
expect "Accept certificate for this session? \[y,N\]"
send "y

3 комментария:

Анонимный комментирует...

Перезагрузка -- это, конечно, самый простой способ, но не помогает ли просто перезапуск служб, отвечающих за работу модема? Это будет быстрее и проще, чем целиком компьютер отправлять в ребут...

Alexey Kostryukov комментирует...

конечно перезапустить службу(ы) быстрее, а какие службы?
да и сейчас это уже не важно, модем больше не использую.
да и принцип работы скрипты не изменится, главное послать нужную команду )

konsvik комментирует...

2Анонимный
Имеется ввиду перезагрузка модема, а не компьютера!