2011-09-20 48 views
-1

可能重複:
ssh invocation in script functionUNIX腳本突然結束,由於SSH命令

以下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 [email protected] 'grep -r '$searchToken' /logs/jas/was60/wsip/wsip*/wsip*' >> WSIP.log 
     echo "plsa0667 WSIP server " >> WSIP.log 
     #ssh [email protected] 'grep -r '$searchToken' /logs/jas/was60/wsip/wsip*/wsip*' >> WSIP.log 
     echo "plsa0668 WSIP server " >> WSIP.log 
     #ssh [email protected] 'grep -r '$searchToken' /logs/jas/was60/wsip/wsip*/wsip*' >> WSIP.log 
     echo "plsa4407 WSIP server " >> WSIP.log 
     #ssh [email protected] '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

從shell提示符運行ssh命令並查看它的作用。如果它要求輸入(例如密碼),那麼這可能是問題。

還有一個標誌腳本模式下運行(從內存-b,但你應該檢查),這也可以幫助你。

-i標誌允許您指定要使用的密鑰,如果這是問題。

1

ssh(1)正在讀取所有標準輸入並耗盡它,導致下一個外殼read返回false並中斷循環。嘗試下列操作之一:

ssh -n [email protected] ... 

ssh < /dev/null [email protected] ... 

防止這種行爲。

+0

謝謝Pilcrow!這工作!所以岩石!想想看,我花了4-5小時弄清楚了這一點! :-) –