[ssh + expect] utlisation de belier

Résolu/Fermé
michou - Modifié par lami20j le 12/09/2010 à 20:26
 Michou - 12 sept. 2010 à 20:42
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

Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 278
8 sept. 2010 à 15:18
Je n'ai jamais utilisé belier, mais ça a l'air puissant, réfère toi au man peut etre.
0
c vrai belier est bien puissant,tu peut jeter un oeil sur ce lien pour savoir ses caractéristiques : http://www.ohmytux.com/belier/
Mais ta solution n'a pas résolu mon problème :(
0
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 278
9 sept. 2010 à 09:16
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 278
10 sept. 2010 à 09:18
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 sept. 2010 à 09:41
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 sept. 2010 à 15:42
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 sept. 2010 à 16:30
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 sept. 2010 à 18:03
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
11 sept. 2010 à 09:23
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 sept. 2010 à 17:54
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 sept. 2010 à 18:42
Et est-ce que sans le paramètre "-t" la connexion s'établie ?
0
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 sept. 2010 à 19:54
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 sept. 2010 à 20:38
Happy for you ;-))
0
thanks (^_^)
0