[ssh + expect] utlisation de belier

Résolu
michou -  
 Michou -
Bonjour,

J'utilise belier sous ubuntu server(machine virtuelle) et j'ai établi la connexion entre ce dernier et autres ordinateurs.Tout ces ordinateurs sont des machines virtuelles.
Je voulais savoir comment entrer la même commande shell à distance sur les différentes machines.

Merci d'avance pour votre aide.

10 réponses

  1. Leahkim Messages postés 3219 Statut Membre 281
     
    Je n'ai jamais utilisé belier, mais ça a l'air puissant, réfère toi au man peut etre.
    0
  2. Leahkim Messages postés 3219 Statut Membre 281
     
    http://www.ohmytux.com/belier/documentation.html

    tout est super expliqué sur cette page :)

    Belier ne sert qu'a se connecter à une machine distante automatiquement, pas plus.
    Il ne vas pas executer de code distant, mais étant donné que te connexion est automatique, tu peux utiliser le script qu'a généré belier dans un autre script.

    0
  3. Michou
     
    J'ai déjà lu cette documentation mais je n'ai pas trouvé le pt en question:
    "Belier generates one script for each final computer to reach."
    et je me demande comment par exemple envoyer des copies d'un même fichier(script) à tout les autres machines par une seule commande shell???
    Merci pr la réponse ^^
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Leahkim Messages postés 3219 Statut Membre 281
     
    tu pourrais copier ici le contenu d'un script généré par belier ?

    tu as compris comment générer le script de connexion non ?
    0
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    D'après ce que j'ai compris, Belier est en fait un programme en python et expect automatisant des connexions via ssh.

    Si tu n'as pas peur de te plonger dans la doc de "expect", ce n'est pas la mer à boire pour élaborer un script se connectant à plusieurs machine pour y exécuter une même commande.

    Ou même avec "belier" à la limite... Comme proposé par Leahkim, en partant d'un exemple de script généré par belier, tu dois pouvoir le cloner pour diverses machines ;-)

    0
  7. Michou
     
    Bonjour,
    merci les amis pour vos réponses.
    J'ai bien suivi le tutoriel et belier à générer le script mais je ne sais pas où il l'a généré.
    autre question:En fait,j'ai créer 2 LANs,le premier contient une machine (ubuntu desktop) +un serveur S1(ubuntu server) + machine ou j'ai installé belier.le 2éme LAN contient le même serveur S1+ un autre serveur S2(tout en virtuel).J'ai établi la connexion entre belier et le serveur S2 par l'intermediaire S1.Je veux envoyer un fichier script de la machine desktop à S2.comment faire?
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Re-

      J'ai bien suivi le tutoriel et belier à générer le script mais je ne sais pas où il l'a généré.
      Je viens d'installer "belier" et de faire un test...
      Le script est généré dans le répertoire d'où tu lances la commande et où tu avais généré le fichier contenant le login et mot de passe de l'hote...
      Par contre même si le programme te rend la main quasi instantanément, il lui faut quelques secondes avant de générer le script, qui n'apparaitra donc pas de suite dans le répertoire ;-\


      Pour ta seconde question, je ne crois pas que ce soit possible. Du moins pas directement comme tu pourrais l'espérer.
      Le programme "belier" ne fait que générer un script (ou des scripts) de connexion avec la syntaxe d'expect (pas très évidente je l'avoue), et donc enchaine juste des connexions (login+password) successives en passant d'une machine à une autre.

      Pour la copie de fichier via plusieurs machine intermédiaires, ça ne pourras pas se faire directement, par contre ce que tu peux faire c'est traverser toutes les machines de ton LAN jusqu'à la destination voulue, et à partir de là, lancer via scp la copie du fichier désiré depuis son point de départ vers la machine où tu te trouve...
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Oublie ce que j'ai dit dans la 2ème partie de mon message.

      La solution existe bel et bien avec "belier". Il te suffit de suivre le tuto intitulé "Open a tunnel for data while connecting to a host" sur la doc officelle ;-))
      0
    3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Waow, je viens de tester et c'est vraiment nickel.

      Shell 1 :
      PC@home => connexion ssh Serveur1@boulot => connexion ssh Serveur2@boulot => Standby
      
      Shell 2 :
      PC@home => scp -P 9999 fichier.txt Serveur2@127.0.0.1:~ => password => transfert



      :-))
      0
  8. Michou
     
    Je viens de tester ça,mais je ne sais pas pourquoi il ne marche pas chez moi :(

    quand je tape "scp -P 9999 test.txt root@127.0.0.1:~" dans shell2
    il me renvoie ce code d'erreur:
    "ssh:connect to host 127.0.0.1 port 9999:connection refused
    lost connection
    "
    Apparemment le port 9999 n'est pas ouvert,en + il n'existe pas parmi la liste des ports générer par la commande "netstat".
    Comment puis-je régler ça?
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      As-tu bien mis le paramètre "-t" dans le fichier de connexion ???

      user@serveur1 password1 -t
      user@serveur2 password2

      Le fichier généré par la commande "bel --entree=nom_fichier" contient-il bien dans la syntaxe "spawn ssh" l'option "-L9999:127.0.0.1:9999" ???

      spawn ssh -o NoHostAuthenticationForLocalhost=yes -o StrictHostKeyChecking=no -L9999:127.0.0.1:9999 user@serveur1
      0
  9. Michou
     
    oui j'ai bien mis le -t dans le fichier de connexion et le fichier généré contient bien la ligne :
    spawn ssh -o NoHostAuthenticationForLocalhost=yes -o StrictHostKeyChecking=no -L9999:127.0.0.1:9999 user@serveur1

    mais de + il contient cette ligne:
    spawn ssh -o NoHostAuthenticationForLocalhost=yes -o StrictHostKeyChecking=no -L9999:127.0.0.1:22 user@serveur2

    et je ne trouve pas ce qu'il manque encore :(
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Bon je viens de refaire un test et chez moi ça roule ;-\

      Effectivement à l'établissement de la connexion (après avoir lancé le script de connexion), la commande "netstat" ne me renvoie aucun port 9999 (ni en user ni en root). Par contre lorsque je lance la commande de copie (scp); là j'ai bien la connexion via le port 9999 d'établie :

      tcp        0 178912 MDK-2010:43211              MDK-2010:9999               ESTABLISHED
      tcp   232080      0 MDK-2010:9999               MDK-2010:43211              ESTABLISHED


      ;-))
      0
    2. Michou
       
      Pour être bien claire voilà ce qui généré mot à mot:
      spawn ssh -o NoHostAuthenticationForLocalhost=yes -o StrictHostKeyChecking=no -L9999:127.0.0.1:9999 IP_du_serveur1
      ssh -o NoHostAuthenticationForLocalhost=yes -o StrictHostKeyChecking=no -L9999:127.0.0.1:22 IP_du_serveur2
      ssh:connect to host IP_du_serveur1 port 22:Connection timed out
      spaw_id:spaw id exp6 not open
      while executing
      ...
      0
    3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Et est-ce que sans le paramètre "-t" la connexion s'établie ?
      0
    4. Michou
       
      sans le "-t" je peut ouvrir le shell du serveur2
      mais qd je test l'envoie du fichier ds un 2ème shell de belier je trouve la même erreur,c_à_dire,qd je tape "scp test.txt user@ip_serveur2:~"
      il me retourne:"ssh:connect to host ip_serveur2 port 22:connection refused
      lost connection"
      0
    5. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Je récapitule :

      Depuis un terminal (shell_1) tu crées un fichier (appelé connexion) avec :

      user@serveur_1 password_1 -t
      user@serveur_2 password_2

      Tu génères le script avec :

      bel ----entree=connexion

      et tu lances le script depuis "shell_1" :

      ./serveur_2.sh

      La connexion s'établie et tu te retrouves avec un prompt sur "serveur_2".

      Tu ouvres un nouveau terminal (shell_2) et tu tapes :

      scp -P 9999 test.txt root@127.0.0.1:~"

      Et tu te retrouves avec l'erreur :

      ssh:connect to host ip_serveur2 port 22:connection refused
      lost connection


      C'est bien ça ?

      Alors, est-ce que tu as bien établi la connexion au serveur_2 avec le "root" ( "root@127.0.0.1") et non pas "user" ???
      0
  10. Michou
     
    Enfinnnnnnnnnnnnn!!!
    J'ai réussi à copier le fichier...
    l'erreur c'était au niveau des adresses IP entrées dans le fichier "connections".
    Je vous remerci les amis.Je vous suis très reconnaissante pour vos coopérations.
    merci encore.
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Happy for you ;-))
      0
    2. Michou
       
      thanks (^_^)
      0