2011-09-20 1 views
-1

Possible en double:
ssh invocation in script functionscripts UNIX se termine brusquement en raison de la commande ssh

Ci-dessous le script UNIX se termine abruptement lors de la lecture seconde ligne du fichier. Lorsque je commente la commande 'ssh', le script fonctionne comme prévu. Je pense que je vais devoir exécuter la commande ssh dans un processus différent, mais je n'ai pas encore de compte sur la façon de le faire. Toute aide pour résoudre ce problème est très appréciée.

*#!/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"* 

Répondre

0

Exécutez la commande ssh à partir de l'invite du shell et voyez ce qu'il fait. S'il demande une entrée (par exemple un mot de passe), cela peut poser problème.

Il existe également un indicateur à exécuter en mode script (à partir de la mémoire -b mais vous devez vérifier) ​​et cela peut également vous aider.

L'indicateur -i vous permet de spécifier la clé à utiliser si tel est le problème.

1

ssh(1) lit tout le code stdin et l'expulse, provoquant le prochain shell read à retourner false et à rompre la boucle. Essayez l'un de ces:

ssh -n [email protected] ... 

ou

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

pour éviter ce comportement.

+0

Merci Pilcrow !! Ça a marché! SO roches !! Et pour y penser, j'ai passé 4-5 heures à le comprendre !! :-) –

Questions connexes