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これはファイルから標準入力を取得するように指示します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

1つ目qはキーボード入力です。

関連情報