[UNIX] Problème avec rsh

Problème avec rsh [UNIX] - Shell/Batch - Programmation

Marsh Posté le 15-10-2008 à 16:17:38    

Salut tout le monde
 
Après mon problème avec sed, je suis de retour avec rsh. Voilà, en fait, j'essaye d'executer une commande précise (un ls) via rsh sur plusieurs serveurs. Je précise que je peux pas le faire via ssh malheureusement.
 
Bref, j'essaie donc d'exécuter la chose mais il m'execute que le serveur situé sur la premiere ligne. Je comprends pas pourquoi, pourtant si je fais la meme chose avec rcp, ça marche.  
 
Je vous poste mon code  
 

Code :
  1. rep_actu=`pwd`
  2. FICHIER_CONFIG="$rep_actu/liste-serveur.txt"
  3. FICHIER_TMP="$rep_actu/tmp-ftp"
  4. SERV_OK="$rep_actu/serv-ok.txt"
  5. EXE_OK="$rep_actu/exe-ok.txt"
  6. rm -f $EXE_OK
  7. touch $EXE_OK
  8. #Verification de la présence du fichier de configuration
  9. if [ ! -f $SERV_OK ]
  10. then
  11. echo "Fichier de configuration introuvable, arret du script"
  12. exit 1
  13. fi
  14. cd /home/admin01
  15. cat "$SERV_OK" | while read i
  16. do
  17. if [ -z "$i" ]
  18. then
  19.  continue
  20. fi
  21. #Variable contenant le serveur distant
  22. nom_serveur=`echo "$i" | awk '{ print $1 }'`
  23. echo "**** Exécution de check-ogd sur $nom_serveur ****"
  24. rsh $nom_serveur ls
  25. done
  26. echo "fin boucle"
  27. exit 0


 
Donc là, il va me faire le ls uniquement sur le serveur désigné par la première ligne du fichier de configuration. En fait, il lit la première ligne et il sort de la boucle (alors qu'il y a plusieurs lignes). Et quand je remplace la commande rsh $nom_serveur ls par echo $i, cette fois ci il me sort sur la sortie standard TOUTES les lignes du fichier.
 
Je précise que je suis sous aix et que je tourne sous du korn shell. Donc si vous avez des explications, je suis preneur...
 
Merci d'avance.

Reply

Marsh Posté le 15-10-2008 à 16:17:38   

Reply

Marsh Posté le 15-10-2008 à 22:27:45    

C'est parce que les données de ton fichier qui viennent après la première ligne sont consommées par le rsh. Ce n'est pas spécifique à rsh, tu aura le même comportement avec n'importe quelle commande qui lit stdin (donc avec ssh aussi).
 
Edit : je pense que la façon la plus simple de régler le problème est de connecter l'entrée standard de ton rsh sur /dev/null :

rsh $nom_serveur ls < /dev/null


 
Ah et au fait, si j'étais toi je ne supprimerais $EXE_OK qu'après la boucle, histoire de ne pas perdre le fichier alors que rien n'a été fait.
 
Tu sais aussi que tu peux installer ssh/sshd sur AIX. C'est dans l'expansion pack. Sous AIX tu as aussi dsh (distributed shell) qui est justement fait pour exécuter des commandes sur les groupes de machines.


Message édité par matafan le 15-10-2008 à 22:39:00
Reply

Marsh Posté le 16-10-2008 à 09:21:27    

Ouais c'est ce que je me suis dit plus tard, mais je voyais pas trop contourner le problème. Du coup, j'ai fait une boucle avec une variable numerique i qui tourne jusqu'à ce que i devienne egale au nombre de ligne du fichier de configuration. Et j'extrait la ligne qui m'intéresse en faisant un sed
 
Quoiqu'il en soit, merci quand même pour l'explication et pour l'idée, je suis sur que ça va me servir plus tard de toutes façons :p
 

Reply

Marsh Posté le 16-10-2008 à 10:53:10    

rsh -n

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed