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만 도움이 되지만 전체 스크립트가 종료됩니다. 이 두 스크립트를 통합하는 더 좋은 방법을 제안할 수 있습니까?

관련 정보