Это команда expect_autoexpect, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
autoexpect - сгенерировать сценарий Expect из просмотра сеанса
СИНТАКСИС
автоматическое ожидание [ арг ] [ программа аргументы ... ]
ВВЕДЕНИЕ
autoexpect наблюдает за тем, как вы взаимодействуете с другой программой, и создает сценарий Expect, который
воспроизводит ваши взаимодействия. Для простых сценариев autoexpect значительно экономит время
над написанием скриптов от руки. Даже если вы эксперт Expect, вы найдете это
удобно использовать autoexpect для автоматизации более бессмысленных частей взаимодействия. это
намного проще вырезать / вставить фрагменты сценариев autoexpect вместе, чем писать их из
царапать. А если вы новичок, возможно, вам ничего не сойдет с рук.
больше о Expect, чем о том, как вызвать autoexpect.
Самый простой способ использовать autoexpect - вызвать его из командной строки без аргументов.
Например:
% автоожидание
По умолчанию autoexpect создает для вас оболочку. Учитывая имя программы и аргументы,
autoexpect порождает эту программу. Например:
% автоожидание ftp ftp.cme.nist.gov
Как только ваша созданная программа будет запущена, взаимодействуйте нормально. Когда вы вышли из оболочки
(или программа, которую вы указали), autoexpect создаст для вас новый скрипт. По умолчанию,
autoexpect записывает новый сценарий в "script.exp". Вы можете переопределить это с помощью флага -f
за которым следует новое имя сценария.
В следующем примере выполняется ftp ftp.cme.nist.gov и сохраняется полученный сценарий Expect.
в файле "nist".
% autoexpect -f nist ftp ftp.cme.nist.gov
Важно понимать, что autoexpect не гарантирует работоспособность скрипта, потому что
он обязательно должен догадываться об определенных вещах, а иногда и ошибаться.
Однако обычно эти проблемы очень легко выявить и исправить. Типичные проблемы
составляют:
· Сроки. Удивительно большое количество программ (rn, ksh, zsh, telnet и др.)
и устройства (например, модемы) игнорируют нажатия клавиш, которые приходят "слишком быстро" после
подсказки. Если вы обнаружите, что ваш новый скрипт зависает в одном месте, попробуйте добавить
короткий сон непосредственно перед предыдущей отправкой.
Вы можете заставить это поведение повсюду, переопределив переменную
"force_conservative" в начале сгенерированного скрипта. Этот
"консервативный" режим заставляет автоматическое ожидание автоматически приостанавливаться на короткое время (одна десятая
секунду) перед отправкой каждого символа. Это умиротворяет каждую программу, которую я знаю
из.
Этот консервативный режим полезен, если вы просто хотите быстро успокоить себя.
что проблема в сроках (или если вас действительно не волнует, насколько быстро
скрипт запускается). Этот же режим может быть установлен перед генерацией скрипта с помощью
используя флаг -c.
К счастью, такие временные точки редки. Например, telnet игнорирует
символы только после ввода его escape-последовательности. Модемы только игнорируют
персонажей сразу после подключения к ним в первый раз. Несколько
программы демонстрируют такое поведение все время, но обычно имеют переключение на
отключи это. Например, флаг rn -T отключает это поведение.
В следующем примере запускается autoexpect в консервативном режиме.
автоожидание -c
Флаг -C определяет ключ для переключения консервативного режима. Следующий пример
запускает автоматическое ожидание (в неконсервативном режиме) с переключателем ^ L. (Обратите внимание, что
^ L вводится буквально - т.е. вводится реальный control-L).
autoexpect -C ^ L
В следующем примере autoexpect запускается в консервативном режиме с ^ L в качестве
переключения.
autoexpect -c -C ^ L
· Второе эхо. Многие программируют эхо-символы. Например, если вы введете "еще" в
оболочки, что на самом деле видит autoexpect:
вы набрали "м",
компьютер набрал "м",
вы набрали "о",
компьютер набрал "о",
вы набрали 'r',
компьютер напечатал "r",
...
Без специальных знаний о программе невозможно узнать, являетесь ли вы
ожидая повторения каждого символа, прежде чем вводить следующий. Если автоматически ожидать
видит отображаемые символы, он предполагает, что может отправить их всех как группу
вместо того, чтобы чередовать их так, как они изначально появились. Это делает
сценарий приятнее читать. Однако предположительно это могло быть неверно, если
вам действительно пришлось ждать, чтобы увидеть эхо каждого символа.
· Изменять. Autoexpect записывает каждого персонажа взаимодействия в сценарии.
Это желательно, потому что это дает вам возможность судить о
что важно и что можно заменить сопоставлением с образцом.
С другой стороны, если вы используете команды, вывод которых отличается от запуска к запуску,
сгенерированные скрипты не будут правильными. Например, «свидание»
команда всегда производит разный вывод. Итак, используя команду date, пока
запуск autoexpect - верный способ создать скрипт, который потребует редактирования
для того, чтобы он работал.
Флаг -p переводит autoexpect в «режим подсказки». В этом режиме автоматическое ожидание будет
ищите только последнюю строку вывода программы - обычно это
незамедлительный. Это решает проблему даты (см. Выше) и большинство других.
В следующем примере запускается автоматическое ожидание в режиме подсказки.
автоожидание -p
Флаг -P определяет ключ для переключения режима подсказки. Следующий пример начинается
autoexpect (в режиме без подсказки) с переключателем ^ P. Обратите внимание, что ^ P - это
ввести буквально - т.е. ввести реальный control-P.
autoexpect -P ^ P
В следующем примере запускается autoexpect в режиме подсказки с переключателем ^ P.
autoexpect -p -P ^ P
ДРУГИЕ ФЛАГИ
" -тихо флаг отключает информационные сообщения, создаваемые autoexpect.
" -Q флаг называет символ кавычки, который может использоваться для ввода символов, которые автоматически ожидают
в противном случае потреблял бы, потому что они используются как переключатели.
В следующем примере показано несколько флагов с кавычками, используемых для ввода
переключатели буквально.
autoexpect -P ^ P -C ^ L -Q ^ Q
СТИЛЬ
Я не знаю, есть ли "стиль" для программ Expect, но autoexpect определенно должен
не восприниматься как какая-либо модель стиля. Например, autoexpect использует функции Expect.
которые предназначены специально для компьютерных сценариев. Так что не пытайся
добросовестно писать сценарии, которые выглядят так, как если бы они были созданы с помощью autoexpect. Это не
полезно.
С другой стороны, скрипты autoexpect действительно показывают некоторые полезные вещи. Например, вы
можно увидеть, как любая строка должна быть заключена в кавычки, чтобы использовать ее в сценарии Tcl, просто запустив
строки через autoexpect.
Используйте expect_autoexpect в Интернете с помощью сервисов onworks.net