IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Plusieurs commandes avec 1 seule R-commande


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Par défaut Plusieurs commandes avec 1 seule R-commande
    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. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Par défaut
    est-ce que ssh est instalé sur la machine B?

    si non, peux-tu l'installer?

    si oui, il est des plus simple avec ssh d'envoyer un ou plusieurs scripts sur B et de lui demander de les exécuter en tâches de fond via un utilitaire nommé "screen", je fais cela quotidiennement sur des serveurs distants de plusieurs centaines de kilomètres.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Par défaut pas de ssh
    malheureusement non et non. pas de ssh envisageable.
    notre liberté d'action sur B est quasi nulle. Il s'agit d'un module de pilotage pour un robot dont nous ignorons presque tout.
    Nous pouvons envisager une autre porte de sortie qui serait :
    transférer le script via FTP de A vers B, puis avec un rsh ou rexec le declencher sur B depuis A. Mais si une solution via les R-commandes ou telnet (et uniquement cela) est possible, elle est à privilégier.
    Damien
    (mci pour la proposition)

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Par défaut
    si tu peux faire cela, c'est gagner! le seul problème et de pouvoir "couper" la connexion après avoir lancer le script distant, mais pour cela, il faut soit screen ou une autre commande du genre "hangup" (j'ai oublié le nom exact) mais cela permet de passer la commande en tâche de fond et surtout de ce déconnecter sans que cela n'arrête la tâche en question.

    et dans les scripts, tu y insères toutes les commandes à exécuter et si plusieurs commandes peuvent être exécutée en même temps, il suffit de mettre "&" en fin de la ligne de commande.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Par défaut
    J'ai déja eu ce genre de problème.

    Le mieux est de copier ton fichier de connmande par rcp puis ensuite de lancer un rsh.

    Ps : tu peux lancer ensuite lancer ton rsh en tache de fond avec :
    nohup 'rsh ....' &

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Par défaut ça avance...
    oui... cela revient un peu au principe évoqué : transfert du script via FTP, puis rsh (avec c'est vrai, pas besoin de connexion FTP).
    Problème : la machine B pourrait ne pas etre la meme d'une fois sur l'autre, donc pb pour determiner le chemin où copier, puis executer, et supprimer le script (+ eventuels problemes d'autorisation). (Le meme probleme se pose pour FTP d'ailleurs).

    J'ai reçu une réponse intéressante :
    rsh machine_B "cmd_1;cmd_2;...cmd_n"
    Cela permet de lancer plusieurs commandes avec un seul appel à rsh, mais dans mon cas (tordu de chez tordu...je vous l'accorde), cela fait envoyer une commande d'au moins 30000 caractères (certainement beaucoup plus)...lol, pas sur que ce soit terrible. On pourrait envisager de fractionner l'action...à voir...

    un truc du genre :
    rlogin machine_B << blabla
    cmd_1
    cmd_2
    ...
    cmd_n
    blabla

    serait parfait et permettrait de ne pas envoyer une commande enorme d'un seul coup... mais ça ne veut pas marcher...

    Bon... merci bcp pour votre aide. Je continue à chercher
    Damien

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Par défaut [résolu]
    rsh machine_B "cmd1;cmd2;...cmdn;"
    Je viens de faire une ligne de plus de 70000 caractères... ça n'a pas bronché, j'ai récupéré la main en douceur après 3 ou 4 minutes.
    C'est nickel,
    merci à tous pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. plusieurs requetes avec un seule while (requete.next)
    Par newmar dans le forum Hibernate
    Réponses: 6
    Dernier message: 18/06/2008, 10h23
  2. Jongler entre plusieurs JPanels avec une seule JFrame
    Par joejoe230 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 14/02/2008, 13h16
  3. Réponses: 2
    Dernier message: 11/04/2007, 12h14
  4. [VBS] Tester plusieurs répertoire avec un seul If
    Par Edoxituz dans le forum VBScript
    Réponses: 38
    Dernier message: 25/02/2006, 20h18
  5. plusieurs tables avec un seul DBnavigator et DBGRID
    Par warrior dans le forum Bases de données
    Réponses: 8
    Dernier message: 07/06/2005, 08h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo