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

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 сессий.

 

Распространяйте и наслаждайтесь:
  • Print this article!
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Diigo
  • Live
  • MySpace
  • RSS
  • StumbleUpon
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • FriendFeed
  • HackerNews
  • LinkedIn
  • MyShare
  • Propeller
  • Upnews
Categories: Expect Tags: ,
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.