由于ssh命令,UNIX脚本突然结束

时间:2011-09-20 04:12:58

标签: shell unix ssh

  

可能重复:
  ssh invocation in script function

UNIX下脚本在从文件读取第二行时突然结束。当我评论'ssh'命令时,脚本按预期工作。我想我将不得不在不同的进程中运行ssh命令,但还没有处理如何做到这一点。我们非常感谢您解决此问题的任何帮助。

*#!/usr/bin/ksh
exec 3<&0
exec 0<./bulkInput.dat
#cat ./bulkInput.dat | while read searchToken || (echo "reading failedi $?" &&  false)
index=0
while true
do
        index=`expr $index + 1`
        if [ $index -gt 450 ]
        then
                echo "Index limit reached. Now exiting"
                exit 0
        fi
        read searchToken
        if [ $? -ne "0" ]
        then
                echo "Read failed"
        fi
        echo "Search token is "${searchToken}
        echo "************************************ **********************************"
        echo "plsa0666 WSIP server " > WSIP.log
        ssh zq742888@plsa0666 'grep -r '$searchToken' /logs/jas/was60/wsip/wsip*/wsip*' >> WSIP.log
        echo "plsa0667 WSIP server " >> WSIP.log
        #ssh zq742888@plsa0667 'grep -r '$searchToken' /logs/jas/was60/wsip/wsip*/wsip*' >> WSIP.log
        echo "plsa0668 WSIP server " >> WSIP.log
        #ssh zq742888@plsa0668 'grep -r '$searchToken' /logs/jas/was60/wsip/wsip*/wsip*' >> WSIP.log
        echo "plsa4407 WSIP server " >> WSIP.log
        #ssh zq742888@plsa4407 'grep -r '$searchToken' /logs/jas/was60/wsip/wsip*/wsip*' >> WSIP.log
        echo "plsa0412 server " >> WSIP.log
        cp WSIP.log bulk/WSIP.log_${searchToken}
        echo $?
done
exec 0<&3
echo "Exiting script"*

2 个答案:

答案 0 :(得分:1)

ssh(1)正在读取所有stdin并耗尽它,导致下一个shell read返回false并中断循环。尝试其中之一:

ssh -n zq742888@plsa0666 ...

ssh < /dev/null zq742888@plsa0666 ...

以防止此行为。

答案 1 :(得分:0)

从shell提示符运行ssh命令,看看它的作用。如果要求输入(例如密码),则可能存在问题。

还有一个以脚本模式运行的标志(来自内存-b但你应该检查),这也可以帮助你。

-i标志允许您指定在出现问题时使用的密钥。

相关问题