リモートサーバーに接続し、特定のパッケージがインストールされていることを確認するスクリプトがあります。
ssh root@server 'bash -s' < myscript.sh
myscript.sh:
OUT=`rpm -qa | grep ntpdate`
if [ "$OUT" != "" ] ; then
echo "ntpdate already installed"
else
yum install $1
fi
この例は単純化できます。これにもmyscript2.sh
同じ問題があります。
read -p "Package is not installed. Do you want to install it (y/n)?" choise
私の問題は、bashが私の答えを対話的に読むことができないということです。
ユーザーにメッセージを表示する機能を失うことなくローカルスクリプトをリモートで実行する方法はありますか?
ベストアンサー1
次のようにしてみてください。
$ ssh -t yourserver "$(<your_script)"
-t
tty割り当てを強制し、ファイル全体を読み取り、その場合は内容をリモートユーザーのシェルによって実行される$(<your_script)
引数として渡します。ssh
スクリプトにパラメータが必要な場合は、スクリプトの後にパラメータを渡してください。
$ ssh -t yourserver "$(<your_script)" arg1 arg2 ...
私には効果がありますが、普遍的なかどうかはわかりません。