Expect: le fameux ! ??
Résolu/Fermé
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
-
30 oct. 2012 à 17:46
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 31 oct. 2012 à 15:18
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 31 oct. 2012 à 15:18
A voir également:
- Expect script tutorial
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
- Microsoft activation script - Accueil - Windows
- Executeur de script - Télécharger - Édition & Programmation
4 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
30 oct. 2012 à 17:57
30 oct. 2012 à 17:57
Salut,
Expect
Essaies avec :
Expect
Essaies avec :
expect -gl "\\\[*]\$*" ou bien : expect -re ".*"
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
Modifié par LezardMoo le 30/10/2012 à 18:19
Modifié par LezardMoo le 30/10/2012 à 18:19
Merci :)
arf! ca ne focntionne pas, avec
expect -gl "\\\[*]\$*" ca me log mais ne me lance pas la commande ls (comme avec les autres commandes que j'ai testé.
et avec
expect -re ca ne me logue meme pas, il n'envoie pas le pass ssh, il me remet le chemin linux a la place
Admin@ip's password: path/linu/x
arf! ca ne focntionne pas, avec
expect -gl "\\\[*]\$*" ca me log mais ne me lance pas la commande ls (comme avec les autres commandes que j'ai testé.
et avec
expect -re ca ne me logue meme pas, il n'envoie pas le pass ssh, il me remet le chemin linux a la place
Admin@ip's password: path/linu/x
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
30 oct. 2012 à 18:11
30 oct. 2012 à 18:11
En suivant le lien donné plus haut :
-gl May may be used to protect patterns that might otherwise match expect flags from doing so. -re Introduce regulaar expression
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
30 oct. 2012 à 18:20
30 oct. 2012 à 18:20
oui j'avais pas vu le lien que tu as posté ^^
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
30 oct. 2012 à 18:35
30 oct. 2012 à 18:35
As-tu essayé "autoexpect." pour voir ce qu'il génère comme prompt ?
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
30 oct. 2012 à 18:36
30 oct. 2012 à 18:36
ha ben... nan parce que je ne savais pas que ca existe ^^
je me renseigne ;)
je me renseigne ;)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
30 oct. 2012 à 18:40
30 oct. 2012 à 18:40
Un tutoriel (en espagnol), qui m'a bien aidé au début : https://fr.scribd.com/document/49665951/Tutorial-de-Expect-V0-6
La page originale n'existe plus malheureusement ;-((
Je viens de retrouver celle-là maintenant en cherchant d'après le nom de l'auteur, ce n'est pas ce qu'on fait de mieux ;-(
La page originale n'existe plus malheureusement ;-((
Je viens de retrouver celle-là maintenant en cherchant d'après le nom de l'auteur, ce n'est pas ce qu'on fait de mieux ;-(
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
31 oct. 2012 à 10:06
31 oct. 2012 à 10:06
bon... autoexpect c'est pas mal, je vois que j'était presque bientot sur la bonne voie dans mon code ^^
par contre quand j'execute le script sortie par autoexpect, qui contient
la connexion ssh avec l'envois du mdp, un cd .., un autre et un dir et bien seule la connexion est réalisée, cd .. et ls ne sont pas executé...?
par contre quand j'execute le script sortie par autoexpect, qui contient
la connexion ssh avec l'envois du mdp, un cd .., un autre et un dir et bien seule la connexion est réalisée, cd .. et ls ne sont pas executé...?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
31 oct. 2012 à 10:13
31 oct. 2012 à 10:13
Euh... à vue de nez sans rien voir, difficile de te venir en aide ;-(
Par contre, à titre d'info, pour l'histoire du prompt, il t'a mis quoi autoexpect ?
Par contre, à titre d'info, pour l'histoire du prompt, il t'a mis quoi autoexpect ?
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
Modifié par LezardMoo le 31/10/2012 à 10:40
Modifié par LezardMoo le 31/10/2012 à 10:40
voila le script sortie par autoexpect
#!/usr/bin/expect -f # to toggle this mode off and on. set force_conservative 0 ;# set to 1 to force conservative mode even if ;# script wasn't run conservatively originally if {$force_conservative} { set send_slow {1 .1} proc send {ignore arg} { sleep .1 exp_send -s -- $arg } } set timeout -1 spawn ssh Administrateur@IP match_max 100000 expect -exact "Administrateur@IP's password: " send -- "pass\r" expect -exact "\r Last login: Wed Oct 31 09:59:09 2012 from ox.fr\r\r \"tty\" option detected in CYGWIN environment variable.\r CYGWIN=tty is no longer supported. Please remove it from your\r CYGWIN environment variable and use a terminal emulator like mintty,\r xterm, or rxvt.\r \[?1034h \]0;~\r\r \[32mAdministrateur@WIN-NUIR7G88F58 \[33m~ \[0m\r\r \$ " send -- "cd ..\r" expect -exact "cd ..\r \]0;/home\r\r \[32mAdministrateur@WIN-NUIR7G88F58 \[33m/home \[0m\r\r \$ " send -- " \[A" expect -exact "cd .." send -- "\r" expect -exact "\r \]0;/\r\r \[32mAdministrateur@WIN-NUIR7G88F58 \[33m/ \[0m\r\r \$ " send -- "ls\r" expect -exact "ls\r bin cygdrive Cygwin.bat Cygwin.ico Cygwin-Terminal.ico dev etc home lib proc tmp usr var\r \]0;/\r\r \[32mAdministrateur@WIN-NUIR7G88F58 \[33m/ \[0m\r\r \$ " send -- "exit\r" expect eof
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
31 oct. 2012 à 14:39
31 oct. 2012 à 14:39
bon... j'ai changé de technique ^^
j'ai coer un ptit script qui fait ce que je veux, je lexecute comme suit:
ssh user@host bash < script.sh
et ca me sort bien ce que je lui demande, le script est sur ma machine locale, aucun soucis mais evidemment je dois entrer le mdp a la mano.
maintenant si je me sers d'expect pour automatiser le mdp ca me logue bien mais alors là ce que je ne comprend pas c'est qu'il cherche a executer le script sur la machine distante... il me dit qu'il ne trouve pas le script etc...
j'ai coer un ptit script qui fait ce que je veux, je lexecute comme suit:
ssh user@host bash < script.sh
et ca me sort bien ce que je lui demande, le script est sur ma machine locale, aucun soucis mais evidemment je dois entrer le mdp a la mano.
maintenant si je me sers d'expect pour automatiser le mdp ca me logue bien mais alors là ce que je ne comprend pas c'est qu'il cherche a executer le script sur la machine distante... il me dit qu'il ne trouve pas le script etc...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
31 oct. 2012 à 14:47
31 oct. 2012 à 14:47
ssh user@host 'bash -s' script.sh
PS. Le fait que tu aies modifié ton précédent message au lieu d'en poster un nouveau, j'étais complètement passé à côté ;-((
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
31 oct. 2012 à 14:48
31 oct. 2012 à 14:48
^^ j'avais testé comme ca aussi, ca n'est pas passé non plus
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
31 oct. 2012 à 14:42
31 oct. 2012 à 14:42
hahaha EUREKA !!!
finaklement j'ai envoyé le script sur le serveur distant et tout fonctionne, c'est un peu tordu mais ca marche ;)
reste plus qu'à faire une fonction pour expect pour raccourcir tout ca !!
Merci de ton aide zipe31 ;)
finaklement j'ai envoyé le script sur le serveur distant et tout fonctionne, c'est un peu tordu mais ca marche ;)
#!/bin/bash # # rapatriement des sources medext # USER="user" HOST="host" PASS="pass\r" EXP="password:" FILE="/home/Administrateur/dlMedSrc" expect -c "spawn ssh $USER@$HOST bash < findMedSrc.sh expect \"$EXP\" send -- \"$PASS\" expect \"$ \" exit 0 " echo "scp du fichier dmMedSrc" expect -c "spawn scp $USER@$HOST:$FILE . expect \"$EXP\" send -- \"$PASS\" expect \"$ \" exit 0 " echo "recup des fichiers dans le dossier RECUP" while read line do expect -c "spawn scp $USER@$HOST:/home/Administrateur/$line RECUP expect \"$EXP\" send -- \"$PASS\" expect \"$ \" exit 0" done < dlMedSrc
reste plus qu'à faire une fonction pour expect pour raccourcir tout ca !!
Merci de ton aide zipe31 ;)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
31 oct. 2012 à 15:05
31 oct. 2012 à 15:05
De rien, mais en effet ce n'est pas très pratique ni conventionnel ;-\
Le plus simple n'aurait pas été de configurer une authentification via des clés ssh ?
Sinon, tu as aussi via les outils "putty-tools", l'utilitaire "plink" qui te permet de te loguer via ssh tout en fournissant le login et le password sur la ligne de commande...
Le plus simple n'aurait pas été de configurer une authentification via des clés ssh ?
Sinon, tu as aussi via les outils "putty-tools", l'utilitaire "plink" qui te permet de te loguer via ssh tout en fournissant le login et le password sur la ligne de commande...
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
Modifié par baladur13 le 31/10/2012 à 15:21
Modifié par baladur13 le 31/10/2012 à 15:21
ca c'est sur c'est pas super conventionnel ni super propre... mais le prob c'est que jinterface du win avec du linux... deja pour find... j'ai du renomer la commande find.exe de windows sinon c'est a celle ci qu il se référait...
Biensure dans la foulé de test j'ai testé avec l'auth par clé mais je sais pas ca a pas marché... windows/linux peut etre... je sais pas
Personnellement je n'utilise windows que depuis que je suis au boulo sinon c'est linux a fond j'ai donc perdu pas mal de reflexes sous win, pour ce qui est de putty je ne l'utilise jamais... je préfère installer cygwin. c'est peut etre meme ca qui fait que j'ai autant galéré d'ailleurs xD
Parce qu'en fait je fais un truc assez horrible:
je ne peux pas faire sortir ma Debian de derrière la box du taff bbox --' (en perso j'ai free et aucun soucis mais la avec leur routeur de m***e impossible d'atteindre ma machine)
ducoup voila le mic mac xD
ya des sources sur une machine win7 distante. par un batch je les compresses et envoi en ftp sur un win2k8r2 distant aussi ensuite j'utilise le script que je viens de faire pour récupérer les sources... tu vois la galère xD
j'ai pas pu installé ssh sur le poste client distant si tu te demande pourquoi je rebondi sur le win2k8r2 donc c'est claire ya plus simple, beaucoup plus simple mais bon... a partir du moment ou ta du matos qui t'empèche de bosser correctement (bbox) faut trouvé d'autre solution.
encore Merci :D
Biensure dans la foulé de test j'ai testé avec l'auth par clé mais je sais pas ca a pas marché... windows/linux peut etre... je sais pas
Personnellement je n'utilise windows que depuis que je suis au boulo sinon c'est linux a fond j'ai donc perdu pas mal de reflexes sous win, pour ce qui est de putty je ne l'utilise jamais... je préfère installer cygwin. c'est peut etre meme ca qui fait que j'ai autant galéré d'ailleurs xD
Parce qu'en fait je fais un truc assez horrible:
je ne peux pas faire sortir ma Debian de derrière la box du taff bbox --' (en perso j'ai free et aucun soucis mais la avec leur routeur de m***e impossible d'atteindre ma machine)
ducoup voila le mic mac xD
ya des sources sur une machine win7 distante. par un batch je les compresses et envoi en ftp sur un win2k8r2 distant aussi ensuite j'utilise le script que je viens de faire pour récupérer les sources... tu vois la galère xD
j'ai pas pu installé ssh sur le poste client distant si tu te demande pourquoi je rebondi sur le win2k8r2 donc c'est claire ya plus simple, beaucoup plus simple mais bon... a partir du moment ou ta du matos qui t'empèche de bosser correctement (bbox) faut trouvé d'autre solution.
encore Merci :D