Интернет магазин китайских планшетных компьютеров



Компьютеры - Expect

13 мая 2011


Оглавление:
1. Expect
2. Использование
3. Мнения



инструмент для автоматизации и тестирования в ОС Unix, написанный Don Libes как расширение к скрипт-языку Tcl, для интерактивных приложений таких, как telnet, ftp, passwd, fsck, rlogin, tip, ssh, и других. С помощью Tk интерактивные приложения могут быть использованы с графическим интерфейсом X11.

Базовые понятия

Expect поддерживает механизм регулярных выражений и основные возможности программирования, позволяющие простым скриптам эффективно управлять такими программами как telnet, ftp, и ssh, не обладающими встроенным скрипт-языком, макросами, или другими механизмами программирования.

Эффективен при работе с сетевым оборудованием - массовое обновление конфигураций управляемого сетевого оборудования с дифференцированным выполнением команд)

Примеры

Простой пример скрипта, который автоматизирует сессию telnet:

   ######################################################################################
   #$remote_server - сервер, к которому осуществляется доступ                           #
   #$my_user_id    - имя пользователя на сервере                                        #
   #$my_password   - пароль пользователя на сервере                                     #
   #$my_command    - команда, которая будет запущена на сервере                         #
   #                                                                                    #
   # Предполагается, что $remote_server, $my_user_id, $my_password, и $my_command       #
   # были инициализированы в скрипте ранее.                                             #
   ######################################################################################
   # Открываем telnet сессию на удалённом сервере, и ждем запроса имени пользователя.
   spawn telnet $remote_server
   expect "username:"
   # Посылаем имя пользователя и ждем запроса пароля.
   send "$my_user_id\r"
   expect "password:"
   # Посылаем пароль и ждем приглашения ввода командного интерпретатора.
   send "$my_password\r"
   expect "%"
   # Посылаем команду, и ждем следующего приглашения ввода командного интерпретатора.
   send "$my_command\r"
   expect "%"
   # Запоминаем результат в переменной. Он может быть отображён, или записан на диск.
   set results $expect_out
   # Завершаем сессию telnet, и ждем символа конца строки.
   send "exit\r"
   expect eof

Ещё один скрипт, который в качестве примера автоматизирует ftp-сессию:

   # Открыть ftp-сессию на удалённом сервере, и ждать запроса имени пользователя.
   spawn ftp $remote_server
   expect "username:"
   # Послать имя пользователя, и ждать приглашения ввода пароля.
   send "$my_user_id\r"
   expect "password:"
   # Послать пароль, и ждать приглашения ввода ftp.
   send "$my_password\r"
   expect "ftp>"
   # Переключиться в бинарный режим, и снова ждать приглашения ввода ftp.
   send "bin\r"
   expect "ftp>"
   # Выключить приглашение ввода.
   send "prompt\r"
   expect "ftp>"
   # Получить все файлы
   send "mget *\r"
   expect "ftp>"
   # Закончить ftp-сессию и ждать спецсимвол конца файла.
   send "bye\r"
   expect eof
  • spawn - вызов программы
  • expect - ожидание вывода запущенной программой строки
  • send - передача данных или команд в вызванную программу
  • close - завершение сценария


Просмотров: 1258


<<< Elive
Flask >>>