Lancer plusieurs cmd avec 1 seule R-commande

Résolu/Fermé
pouldo Messages postés 8 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 13 janvier 2009 - 1 avril 2005 à 15:17
pouldo Messages postés 8 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 13 janvier 2009 - 2 avril 2005 à 12:32
Salut, alors voici mon problème :
Tout se passe entre deux machines : un RedHat 8.0 (machine A) et une autre machine de type UNIX (machine B, mais dont on ne connait pas grand chose d'autre). Seule certitude à propos de la machine B, elle accepte les R-commandes (rsh, rexec, rlogin) et les connexions telnet.
Je cherche à lancer un grand nombre de commandes sur B depuis un script shell sur A en ouvrant une seule connexion.

problème avec rsh : je ne peux lancer qu'une execution par connexion (inacceptable, car j'en ai des millers qui prennent chacune plusieurs secondes). Y a-t-il un moyen de lancer plusieurs executions sans refaire un rsh à chaque fois?
problème avec rexec : idem que rsh, impossible de lancer plusieurs commandes
problème avec rlogin : tout est correctement configuré sur B (fichiers .rhosts et hostequiv), en ouvrant une console sur A, la commande : rlogin machine_B fonctionne sans problème. Mais je ne parviens pas à utiliser la commande rlogin dans un script du type :

rlogin machine_B << blabla
cmd_1
cmd_2
...
cmd_n
blabla


la connexion est immédiatement coupée
problème avec telnet : idem, la redirection en entrée pose problème, cela met directement un terme à la connexion.

Voilà... si qq1 a une idée pour l'une des quatre pistes (peu importe laquelle, du moment que ça marche), je serais ravi. En farfouillant à droite à gauche, j'ai vu des propositions de piste du type TCL, expect, mais ce genre de solution serait vraiment un dernier recours.

D'avance merci à ceux qui auront pris le temps de lire mon roman (lol, si vous êtes éditeurs...), bye
Damien
A voir également:

2 réponses

gbenay Messages postés 61 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 3 mars 2006 11
1 avril 2005 à 18:27
bonjour,
Pourquoi n'essaies-tu pas de creer sur la machine distante un script
qui contient toutes tes commandes distantes et qui sera execute par une
 rsh commande

A+
0
pouldo Messages postés 8 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 13 janvier 2009 3
1 avril 2005 à 18:39
merci pour ton aide, j'ai trouvé diverses aides à droite à gauche, et la solution semble etre :
rsh machine_B "cmd1;cmd2;....cmdn;"
Meme dans mon cas (commande ENORME >50000 caractères), ça ne bronche pas.

Je laisse le fil des forums dans lesquels j'avais posté (si ça peut rendre service) :
http://www.ze-linux.org/forum.html?id_forum=4&question=46846?PHPSESSID=5b0ca73871232253e6c75c2689f74607
http://www.developpez.net/forums/viewtopic.php?p=1789644#1789644
http://forum.pcastuces.com/sujet.asp?page=1&SUJET_ID=164594��
0
rsh machine_B "cmd1;cmd2;....cmdn;"


C'est effectivement une solution mais elle possède un défaut a connaitre : si par exemple cmd2 doit réaliser un traitement sur des données générées par cmd1 et que ces dernieres sont erronées (erreur a l'execution de cmd1), ton enchainement de commandes va se poursuivre comme si de rien n'etait.

Personnellement j'aurais plus tendance à utiliser :
rsh machine_B "cmd1 && cmd2 && [...]  && cmdn"


Qui revient a dire "n'execute cmd2 que dans le cas ou cmd1 a bien fonctionné"
0
pouldo Messages postés 8 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 13 janvier 2009 3
2 avril 2005 à 12:32
ah... super info, merci. Je teste ça dès lundi.
0