прочитайте ответ не работает на ssh bash -s скрипт

прочитайте ответ не работает на ssh bash -s скрипт

В моем скрипте есть несколько команд для запроса ответа «да» или «нет», но команда чтения ответа (интерактивный режим) не работает при запуске скрипта с использованием ssh bash -s script.

ssh user@hostname bash -s < "/home/xxxx/devstop.sh"

он не запрашивает вопрос из удаленной оболочки и выходит в исходную оболочку.

Мой сценарий:

if [ "$count" -eq "0" ]
then
        echo -e "${GREEN}Tomcat Server stopped successfully on '$HOSTNAME' ${NC}"
elif [ $count -gt "0" ]
then 
        echo -e "${RED}Tomcat Server not stopped on '$HOSTNAME' please check it ${NC}"
        echo "Do you want to continue all the tomcat server shutdown process in -`date` "
echo "          Please Read the Above and Enter (Y/N) to Proceed or Stop to cancel shutdown processes :  \c"
read answer

value=`echo ${answer} | tr -s '[:lower:]' '[:upper:]'`

if [ "$value" = "Y" ]
then
        echo "                             Remaining tomcat Services are going down."
else
        echo "                             Cancelled tomcat Services shutdown process in '$HOSTNAME."
        exit 1;
fi

fi

ps -ef|grep tomcat|grep -v grep |grep -i "catalina.startup.Bootstrap start"

exit

решение1

Работает read. Но не так, как вы думаете.

ssh user@hostname bash -s < "/home/xxxx/devstop.sh"

Это говорит ssh user@hostname bash -s, что нужно получить его stdin из файла devstop.sh. Так что когда дело дойдет до вашего

read answer

Он возьмет следующую строку из stdin в качестве ввода для read. В вашем скрипте это пустая строка. Из-за пустой строки ваш ответ будет пустым.

Вы можете протестировать это локально:

$ cat <<EOF >it
read a
echo $a
echo $a
EOF
$ bash it
q
q
q
$ bash < it
echo $a

Первый q— это ввод с клавиатуры.

Связанный контент