リモートサーバーに接続して更新を実行するスクリプトを作成しようとしていますが、その時点でコンピュータを使用している人がいないことを確認したいので、「ps」コマンドを実行してプロセスを確認してから、インストールを続行する必要があるかどうかを尋ねます。私が作成しようとしているコードは次のとおりです。
ssh -T root@$machine <<- 'END'
#Show the non-root processes
ps -ef | grep -v root
#Prompt if should continue (this doesn't work)
echo "Continuar a instalação? [y/n]"
select valor in y n
do
case $REPLY in
y )
echo "Digitado y"
break
;;
n )
echo "Digitado n"
exit
;;
esac
done
#Test if it's working
echo "Test"
END
このコードを実行すると、次の動作が発生します。
Continuar a instalação? [y/n]
1) y
2) n
#? 1) y
2) n
#? #? 1) y
2) n
#? #?
#? 1) y
2) n
#? #? #? 1) y
2) n
#? #? #? #?
その後、スクリプトが閉じます。 -t -tオプションを使用してsshを実行してみましたが、まだ同じ問題が発生しました。私は何を見逃していますか?
ベストアンサー1
select
スクリプトをオンにすると、リモートプロセス()と通信できなくなりますstdin
。入力が終わると、select
ファイルからいくつかのゴミを読み、次にstdin
EOFを読み取るという状況が発生します。
ファイルをサーバーにコピーしscp
た後に実行するために使用する必要があります。