Lancer plusieurs cmd avec 1 seule R-commande

Résolu
pouldo Messages postés 8 Statut Membre -  
pouldo Messages postés 8 Statut Membre -
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

2 réponses

  1. gbenay Messages postés 61 Statut Membre 11
     
    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
    1. pouldo Messages postés 8 Statut Membre 3
       
      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
  2. LaoTseu
     
    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
    1. pouldo Messages postés 8 Statut Membre 3
       
      ah... super info, merci. Je teste ça dès lundi.
      0