Posez votre question Signaler

Lancer plusieurs cmd avec 1 seule R-commande [Résolu]

pouldo 11Messages postés 1 avril 2005Date d'inscription - Dernière réponse le 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
Lire la suite 

Lancer plusieurs cmd avec 1 seule R-commande »

4 réponses
Réponse
+0
moins plus
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+
pouldo- 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��
Ajouter un commentaire
Réponse
+0
moins plus
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é"
pouldo- 2 avril 2005 à 12:32
ah... super info, merci. Je teste ça dès lundi.
Ajouter un commentaire
Ce document intitulé « lancer plusieurs cmd avec 1 seule R-commande » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?