阅读答案在 ssh bash -s 脚本上不起作用

阅读答案在 ssh bash -s 脚本上不起作用

我的脚本中有一些命令可以提示是或否的答案,但是使用 运行脚本时读取答案命令(交互模式)不起作用ssh bash -s script

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

它不会从远程 shell 提示问题,而是退出到源 shell。

我的脚本:

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从文件中获取其标准输入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是键盘输入。

相关内容