使用 ssh -t -t 后无法退出脚本

使用 ssh -t -t 后无法退出脚本

我正在运行一个 shell 脚本,它将ssh连接到多个服务器,连接到它们上的数据库,运行一些查询,然后退出。脚本如下:

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

我必须强制 tty 使用 -t -t 因为不知何故 request_tty -t 不适用于所有服务器。脚本/path/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 有帮助,但它会杀死整个脚本。您能建议任何更好的方法来集成这两个脚本吗?

相关内容