Как я могу управлять интерактивным приложением Unix программно через Perl?

Я унаследовал 20-летнее интерактивное Unix-приложение командной строки, которое больше не поддерживается его поставщиком. Нам нужно автоматизировать некоторые задачи в этом приложении.

Наиболее неприятным из них является создание тысяч новых записей с немного отличающимися параметрами (например, разными идентификаторами, разными именами). Записи должны создаваться последовательно, по одной за раз, что займет много месяцев (и, следовательно, долларов), чтобы сделать вручную. В большинстве случаев создание записи имеет очень предсказуемый характер ввода команд, чтения ответов, ввода дальнейших команд и т. Д. Однако некоторые операции создания записи приводят к ошибочным условиям ('запись с этим идентификатором уже существует), которые требуют изящного выхода из другого набора команд.

Я вижу несколько разных способов сделать это:

Именованные трубы. Напишите сценарий Perl, который запускает целевое приложение с установленными STDIN и STDOUT для именованных каналов, затем отправляет целевому приложению последовательность команд для создания записи с необходимыми параметрами, а затем инструктирует целевое приложение для выхода и завершения работы. Затем мы запускаем скрипт столько раз, сколько требуется, с разными параметрами.

Заявка. Найдите другой инструмент Unix, который можно использовать для написания сценариев интерактивных программ. Единственные, которые мне удалось найти, этоожидать, но это, похоже, не поддерживается; и чат, о котором я вспоминал много лет назад и который, кажется, делает более или менее то, что я хочу, но, похоже, предназначен только для управления модемами.

Еще одно потенциальное осложнение: я думаю, что целевое приложение было написано для терминала VT100, и оно использует какие-то escape-последовательности для таких вещей, как обеспечение выделения.

Мой вопрос: какой подход мне выбрать? Один из них или что-то совершенно другое? Мне очень нравится идея использовать именованные каналы, а затем иметь скрипт Perl, который открывает FIFO и читает и записывает по мере необходимости, поскольку он обеспечивает большую гибкость, но из того, что я прочитал, кажется, что там »Есть много потенциальных проблем, если я пойду по этому пути.

Заранее спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос