Expect-утилита автоматизации ежедневных задач

В процессе автоматизаций рутинных задач по администрированию различных систем,часто требуется выполнения такой тревиальной задачи как ввод строки логина и пароля.

Вот для таковых целей есть непримечательная утилитка, имя которой expect.

Работает утилита по принципу  «Ожидай и вводи», т.е.  ожидает приглашения ввода и, когда дожидается, высылает заданную команду.

Ниже приведено два образца для часто используемых telnet и ftp сессий, имеющие подробные комментарии. Внимательно разберите данный пример автоматизации сессий и пользуйтесь на здоровье.

Для автоматизации telnet сессий:

#!/usr/bin/expect -f

remote_server=’192.168.0.1′ # сервер, к которому осуществляется доступ

my_user_id=’Admin’ # имя пользователя на сервере

my_password=’root’ # пароль пользователя на сервере

my_command=’adsl info’ # команда, которая будет запущена на сервере

log_user 0 # Отключаем вывод, чтобы не мешался

spawn telnet $remote_server # Открываем telnet сессию на удаленном сервере

expect «Username :» {send «$my_user_id\r»} # Дожидаемся запроса имени пользователя и посылаем имя пользователя

expect «Password :» {send «$my_password\r»} # Дожидаемся запроса пароля и посылаем его

expect «{Administrator}=>» {send «$my_command\r»} # Дожидаемся приглашения ввода командного интерпретатора и посылаем нашу команду

log_user 1 # Включаем вывод, нам же нужен результат работы нашей команды :)

send «exit\r» # Завершаем сессию telnet

expect eof # Ждем символа конца строки (eof)

Для автоматизации ftp сессий:

#!/usr/bin/expect -f

remote_server=’192.168.0.1′ # сервер, к которому осуществляется доступ

my_user_id=’Admin’ # имя пользователя на сервере

my_password=’root’ # пароль пользователя на сервере

my_command=’mget *’ # команда, которая будет запущена на сервере

log_user 0 # Отключаем вывод, чтобы не мешался

spawn telnet $remote_server # Открываем ftp сессию на удаленном сервере

expect «username:» {send «$my_user_id\r»} # Дожидаемся запроса имени пользователя и посылаем имя пользователя

expect «password:» {send «$my_password\r»} # Дожидаемся запроса пароля и посылаем его

expect «ftp>» {send «bin\r»} # Ждем приглашения ввода ftp и переключаемся в бинарный режим

expect «ftp>» {send «$my_command\r»} # Дожидаемся следующего приглашения ввода ftp и посылаем нашу команду

log_user 1 # Включаем вывод, нам же нужен результат работы нашей команды :)

send «bye\r» # Завершаем сессию ftp

expect eof # Ждем символа конца строки (eof)

Также обратите внимание на man netrc, которая,возможно, легче для использования в конкретных случаях для автоматизации telnet и ftp сессий.

 

Похожие публикации:

  1. Где найти скрипт autoexpect в Ubuntu (Debian)?
Запись опубликована в рубрике Expect с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>