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

Исходное сообщение
"Как в sh или bash автоматически отвечать на вопросы"

Отправлено Cforest , 28-Фев-05 17:52 
Добрый день. Ситуация: есть прога, которая вызывается из шелла и требует ответа на свои вопросы: подтверждение установки, путь к каталогу и прочее. Хочется автоматизировать ответы на эти вопросы: то есть запускать эту прогу из какой-нибудь внешней проге, в которой подставлять заранее подготовленные ответы. Можно ли это реализовать ?
PS. Те, кто постарше, наверное помнят про 4dos - мощный аналог command.com в DOS/Windows. Так вот, в 4dos была замечательная команда keystack, которая как раз делала то, что я хочу реализовать в юниксовом шелле:

KEYSTACK takes a series of keystrokes and feeds them to a program or command as if they were typed at the keyboard.  When the program has used all of the keystrokes in the keystack buffer, it will begin to read the keyboard for input, as it normally would.

Так возможно ли такое в bash/sh ? Спасибо.


Содержание

Сообщения в этом обсуждении
"Как в sh или bash автоматически отвечать на вопросы"
Отправлено Simps , 28-Фев-05 18:45 
>Добрый день. Ситуация: есть прога, которая вызывается из шелла и требует ответа
>на свои вопросы: подтверждение установки, путь к каталогу и прочее. Хочется
>автоматизировать ответы на эти вопросы: то есть запускать эту прогу из
>какой-нибудь внешней проге, в которой подставлять заранее подготовленные ответы. Можно ли
>это реализовать ?
>PS. Те, кто постарше, наверное помнят про 4dos - мощный аналог command.com
>в DOS/Windows. Так вот, в 4dos была замечательная команда keystack, которая
>как раз делала то, что я хочу реализовать в юниксовом шелле:
>
>
>KEYSTACK takes a series of keystrokes and feeds them to a program
>or command as if they were typed at the keyboard.  
>When the program has used all of the keystrokes in the
>keystack buffer, it will begin to read the keyboard for input,
>as it normally would.
>
>Так возможно ли такое в bash/sh ? Спасибо.

для таких целей надо использовать expect


"Как в sh или bash автоматически отвечать на вопросы"
Отправлено Xenu , 01-Мрт-05 02:34 
возможно и многими способами, вот один пример:

#!/usr/bin/bash
# ----------------------------------------------
# [18:24:39] (0) ~/prj/shell
# user@localhost$ ./install.sh y
# Как дела ?:
# хорошо
#
# [18:24:45] (0) ~/prj/shell
# user@localhost$ ./install.sh n y
# Как дела ?:
# хорошо
#
# [18:24:48] (0) ~/prj/shell
# user@localhost$
# ----------------------------------------------

RECON=${1:-'n'}
PLAYON=${2:-'n'}

FILE="install.rec"

ANSWER=""

ask()
{
    msg=$1

    echo "$msg:"
    if [ "$PLAYON" = "y" -a -r $FILE ]
    then
        ANSWER=`sed -n "s/$msg:\(.*\)/\1/p" $FILE`
    else
        read ANSWER
        [ "$RECON" = "y" ] && echo "$msg:$ANSWER" >> $FILE
    fi
}

[ "$RECON" = "y" -a -r $FILE ] && rm $FILE

ask "Как дела ?"

if [ "$RECON" = "n" ]
then
    echo $ANSWER
fi