我正在运行一个 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 有帮助,但它会杀死整个脚本。您能建议任何更好的方法来集成这两个脚本吗?