Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: EXPECT проблема с telnet  (Прочитано 3327 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zhmak

  • Автор темы
  • Участник
  • *
  • Сообщений: 101
    • Просмотр профиля
    • ЖЖ страница
EXPECT проблема с telnet
« : 18 Января 2011, 02:29:14 »
Пытаюсь написать EXPECT скрипт для передергивания модема DLink DSL-504 в случае отсутствия интернета .

Выглядит примерно так:
spawn telnet 192.168.99.99
expect "Login:"
send "login\r"
expect "Password:"
send "password\r"
expect "#"
send "reboot\r"
expect eof

После запуска видно, что авторизация на модеме проходит нормально. Но вот после появления приглашения "#" команда reboot не следует. Через секунду-две скрипт молча завершается и выбрасывает в командную строку.

Где грабли?

Axa-Ru

  • Гость
Re: EXPECT проблема с telnet
« Ответ #1 : 18 Января 2011, 04:43:11 »
Или Вы неверно скрипт написали или показали его не полностью.

В начале должно быть;
#!/usr/bin/expectа в конце
interact
Попробуйте так:
#!/usr/bin/expect
spawn telnet 192.168.99.99
expect "Login:"
send "login\r"
send "password\r"
set timeout 60
expect "#"
send "reboot\r"
interact

Оффлайн Zhmak

  • Автор темы
  • Участник
  • *
  • Сообщений: 101
    • Просмотр профиля
    • ЖЖ страница
Re: EXPECT проблема с telnet
« Ответ #2 : 18 Января 2011, 22:13:45 »
Или Вы неверно скрипт написали или показали его не полностью.

В начале должно быть;
#!/usr/bin/expectа в конце
interact
Сначала запускал через /usr/bin/expect -f, там можно и не писать, имхо. Сейчас переделал, по Вашему шаблону. Скрипт логинится на модем успешно, но команда reboot не посылается. Просто висит приглашение модема. Там можно вручную ввести команду, но это не то ;)

zhmak@server13:~/scripts# cat modem.expect
#!/usr/bin/expect
# логинимся на модем и перезагружаем его

spawn telnet 192.168.99.99
expect "login:"
send "admin"
expect "Password:"
send "secret"
expect "#"
set timeout 5
send "reboot"
interact

запустив имеем:
zhmak@server13:~/scripts$ ./modem.expect
spawn telnet 192.168.99.99
Trying 192.168.99.99...
Connected to 192.168.99.99.
Escape character is '^]'.

BusyBox on (none) login: admin
Password:


BusyBox v0.61.pre (2007.12.21-01:42+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

#

Пользователь решил продолжить мысль 18 Января 2011, 23:56:13:
Нашел ошибку. Всё оказалось весьма глупо.
Забыл после пароля поставить \r

Непонятно только почему авторизация все же проходила?
« Последнее редактирование: 18 Января 2011, 23:56:13 от Zhmak »

Axa-Ru

  • Гость
Re: EXPECT проблема с telnet
« Ответ #3 : 19 Января 2011, 00:22:09 »
 ;) Электричество наука о контактах.

 

Страница сгенерирована за 0.017 секунд. Запросов: 20.