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"*
答案 0 :(得分:1)
ssh(1)
正在读取所有stdin并耗尽它,导致下一个shell read
返回false并中断循环。尝试其中之一:
ssh -n zq742888@plsa0666 ...
或
ssh < /dev/null zq742888@plsa0666 ...
以防止此行为。
答案 1 :(得分:0)
从shell提示符运行ssh命令,看看它的作用。如果要求输入(例如密码),则可能存在问题。
还有一个以脚本模式运行的标志(来自内存-b但你应该检查),这也可以帮助你。
-i标志允许您指定在出现问题时使用的密钥。