Вы не хотите объединять программу и аргументы в одну строку :просто удалите кавычки
spawn sh /opt/Avaya/CCR/util/CAT/cat.sh --iptfile=no
Вы можете сделать это (как пользователь root )с помощью TIOCSTI
ioctl. См. пример программы в конце этого ответа . Используйте его как
echo [whatever] |./tiocsti > /dev/ttyS0
Вы также можете сделать это из perl без необходимости компилировать что-либо --поищите на этом сайте, там много примеров .
Другой вариант, который я использую, заключается в том, чтобы сделать это на аппаратном уровне :, просто подключив машину к себе через последовательный USB-адаптер -> и записав в/dev/ttyUSBx
(или /dev/serial/by-id/xx-xx-xx
). ] все, что вы хотите прочитать из/dev/ttySx
(сделать /dev/ttyUSBx
необработанным с stty raw
, чтобы он передал данные без изменений ).
TIOCSTI
доступен, но в настоящее время этот механизм не очень ценится. Альтернатива очень проста :— это то, что делают псевдотерминалы -. Просто наведите сканер на псевдо-терминал -вместо реального последовательного терминала и введите соответствующий ввод с главной стороны псевдо-терминала -. Действительно,expect
поставляется готовым -, предназначенным для управления приложением ввода-вывода интерактивного терминала через псевдо-терминал -.
Все зависит от того, является ли expect
, находящийся в пакете Fedora, тем, что люди, устанавливавшие все, уже установили на вашу машину. Это также верно и для Perl, конечно. Мы, отвечающие, не можем знать, что на самом деле влечет за собой расплывчатое «голое тело».