URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4198
[ Назад ]

Исходное сообщение
"Как без участия ручек передать интерактивной софтине команду"

Отправлено mse , 21-Апр-05 01:38 
Доброго времени суток! Подскажите, возможно ли сделать так:

есть программа, при запуске появляется меню, ждет пока введешь номер команды, потом нажмешь ввод и соответственно потом получаем вывод, и ожидание след. команды.

su-2.05b# apctest


2005-04-21 01:34:06 apctest 3.10.11 (26 January 2004) freebsd
Checking configuration ...
Attached to driver: apcsmart
sharenet.type = DISABLE
cable.type = CUSTOM_SMART

You are using a SMART cable type, so I'm entering SMART test mode
mode.type = SMART
Setting up serial port ...
Creating serial port lock file ...
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing Smart UPSes.
Please select the function you want to perform.

1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
7) Quit

Select function number:


Так вот нужно написать скриптик на bash, который бы запускал программу, пердавал ей сначала 1, потом писал вывод в файл, потом передавал 7 и все.. ну и потом наверное добавить в конец

ps aux | grep apctest
if [ $? -eq 0 ]; then
exit 0
else
kill -9 `ps aux | grep apctest | awk '{print $2}'`
fi

это так сказать чтобы точно прибить софтину, если повиснет.

Так возможно ли это реализовать?

Спасибо за внимание!


Содержание

Сообщения в этом обсуждении
"Как без участия ручек передать интерактивной софтине команду"
Отправлено Maxim Kuznetsov , 21-Апр-05 10:17 
>Доброго времени суток! Подскажите, возможно ли сделать так:
>
>есть программа, при запуске появляется меню, ждет пока введешь номер команды, потом
>нажмешь ввод и соответственно потом получаем вывод, и ожидание след. команды.
>
>
>su-2.05b# apctest
>
>
>2005-04-21 01:34:06 apctest 3.10.11 (26 January 2004) freebsd
>Checking configuration ...
>Attached to driver: apcsmart
>sharenet.type = DISABLE
>cable.type = CUSTOM_SMART
>
>You are using a SMART cable type, so I'm entering SMART test
>mode
>mode.type = SMART
>Setting up serial port ...
>Creating serial port lock file ...
>Hello, this is the apcupsd Cable Test program.
>This part of apctest is for testing Smart UPSes.
>Please select the function you want to perform.
>
>1) Query the UPS for all known values
>2) Perform a Battery Runtime Calibration
>3) Abort Battery Calibration
>4) Monitor Battery Calibration progress
>5) Program EEPROM
>6) Enter TTY mode communicating with UPS
>7) Quit
>
>Select function number:
>
>
>Так вот нужно написать скриптик на bash, который бы запускал программу, пердавал
>ей сначала 1, потом писал вывод в файл, потом передавал 7
>и все.. ну и потом наверное добавить в конец
>
>ps aux | grep apctest
>if [ $? -eq 0 ]; then
>exit 0
>else
>kill -9 `ps aux | grep apctest | awk '{print $2}'`
>fi
>
>это так сказать чтобы точно прибить софтину, если повиснет.
>
>Так возможно ли это реализовать?
>
>Спасибо за внимание!


берется пакет expect (как раз для подобных случаев),
в нём есть скрипт autoexpect, под этим скриптом запускаешь subj,
проходишь весь сценарий один раз руками...в итоге получаешь скрипт,
который сможет это повторить в автоматическом режиме


"Как без участия ручек передать интерактивной софтине команду"
Отправлено melco , 21-Апр-05 11:32 
>Доброго времени суток! Подскажите, возможно ли сделать так:
>
>есть программа, при запуске появляется меню, ждет пока введешь номер команды, потом
>нажмешь ввод и соответственно потом получаем вывод, и ожидание след. команды.
>
>
>su-2.05b# apctest
>
>
>2005-04-21 01:34:06 apctest 3.10.11 (26 January 2004) freebsd
>Checking configuration ...
>Attached to driver: apcsmart
>sharenet.type = DISABLE
>cable.type = CUSTOM_SMART
>
>You are using a SMART cable type, so I'm entering SMART test
>mode
>mode.type = SMART
>Setting up serial port ...
>Creating serial port lock file ...
>Hello, this is the apcupsd Cable Test program.
>This part of apctest is for testing Smart UPSes.
>Please select the function you want to perform.
>
>1) Query the UPS for all known values
>2) Perform a Battery Runtime Calibration
>3) Abort Battery Calibration
>4) Monitor Battery Calibration progress
>5) Program EEPROM
>6) Enter TTY mode communicating with UPS
>7) Quit
>
>Select function number:
>
>
>Так вот нужно написать скриптик на bash, который бы запускал программу, пердавал
>ей сначала 1, потом писал вывод в файл, потом передавал 7
>и все.. ну и потом наверное добавить в конец
>
>ps aux | grep apctest
>if [ $? -eq 0 ]; then
>exit 0
>else
>kill -9 `ps aux | grep apctest | awk '{print $2}'`
>fi
>
>это так сказать чтобы точно прибить софтину, если повиснет.
>
>Так возможно ли это реализовать?
>
>Спасибо за внимание!


Ну послать нажате ИМХО это
(echo 1;
echo 7;)| apctest>myfile1.txt

ну а с выводом можна манипуляции творить


"Как без участия ручек передать интерактивной софтине команду"
Отправлено mse , 21-Апр-05 12:40 
Всем спасибо! autoexpect решил мою задачу!