ssh -t -t を使用した後、スクリプトを終了できません。

ssh -t -t を使用した後、スクリプトを終了できません。

ssh複数のサーバーに接続し、そのサーバーのデータベースに接続し、いくつかのクエリを実行してからシャットダウンするシェルスクリプトを実行しています。スクリプトは次のとおりです。

#!/bin/ksh  
for i in server1 server2 server3  
do  
ssh -t -t $i 'sudo su - oracle && bash -s' < /path/r1.sh  
done  
exit

request_tty -tがすべてのサーバーで機能していないため、ttyに-t -tを使用するように強制する必要があります。スクリプト/パス/r1.shは次のとおりです。

ALL_DATABASES=`cat /etc/oratab|grep -v "^#"|grep -v "N$"|cut -f1 -d: -s`  
for DB in $ALL_DATABASES  
do  
   unset  TWO_TASK  
   export ORACLE_SID=$DB  
   export ORACLE_HOME=`grep "^${DB}:" /etc/oratab|cut -d: -f2 -s`  
   export PATH=$ORACLE_HOME/bin:$PATH  
   echo "---> Database $ORACLE_SID, using home $ORACLE_HOME"  
   sqlplus "/ as sysdba" <<-EOF  

select name from v\$database;  
exit;  
EOF  
done  

問題は、スクリプトが最初のサーバーでのみ実行され、終了しないことです。 CTRL + Cだけが役に立ちますが、スクリプト全体が終了します。これら2つのスクリプトを統合するより良い方法を提案できますか?

ベストアンサー1

おすすめ記事