基本的にユーザに質問をし、ユーザからの入力に応じてカスタムアプリケーションの値を設定するスクリプトを実行したかったのです。問題は、実行されているが、ユーザーに入力を促さず、デフォルト値をとることです。私は以下のようにrootユーザのbashrcに、スクリプトと呼ばれている最初のrootログインisuue
if [ -e /opt/services_vm/autoUpgrade.sh ];
then
/opt/services_vm/autoUpgrade.sh
fi
問題は、入力と最初のcase文のためのプロンプトではないユーザーが取得しているということです
#!/bin/bash
while true; do
read -p "Do you want to enable automatic upgrade [Y|y - Yes] [N|n - No] [Yes] ?" yn
case $yn in
[Yy] | "") sed -i "s#<autoupgrade-enabled>OFF<\/autoupgrade-enabled>#<autoupgrade-enabled>ON<\/autoupgrade-enabled>#g" /opt/avaya/SAL/gateway/SpiritAgent/config/agent/SPIRITAgent_1_0_PDComponentConfig.xml;
rm -rf /opt/services_vm/autoUpgrade.sh
exit;;
[Nn]) rm -rf /opt/services_vm/autoUpgrade.sh
exit;;
*) echo "Please answer yes or no.";;
esac
done
以下のように
自動アップグレードスクリプトが見えますデフォルトで実行されます。これはログに表示されます。また、私が作った構成に従って、rootユーザーは最初の試行でパスを変更しなければなりません。そのユーザーは、パスを変更してスクリプトの下で実行するが、ユーザーにプロンプトを出すのではなくデフォルトの入力を行うように強制する。
私はそれを手動で入れると機能します。しかし、私はそれが最初のルートログインでのみ実行される、この理由のためにスクリプト内の自己削除ステートメントをコーディングしたい。そのVMはどこセントOSのためのイメージを作成し、マシン上に展開しています。私は最初のログイン時にパスワードを変更するためにrootユーザーを設定しており、その後スクリプトが実行されるはずです。 – user530158
スクリプトの呼び出しは.bashrcファイルからです。rootにログインするとスクリプトが実行されることを期待していました。スクリプトがいつ実行されるかは不明です。 – user530158