Expect: le fameux ! ??
Résolu
LezardMoo
Messages postés
614
Statut
Membre
-
LezardMoo Messages postés 614 Statut Membre -
LezardMoo Messages postés 614 Statut Membre -
Bonsoir tout le monde !!!
alors oui j'ai lu pas mal de site et d'explication sur cette commande et non google n'est plus mon amis parce que je n'est pas trouvé ce que jy cherchais ! ^^
c'est pourquoi je fais appel à vous :)
donc voila le but: connexion ssh depuis une debian sur un win2k8r2 + ls -l(pour l'instant)
j'ai installer openssh par cygwin.
donc pour la conenxtion ssh aucun soucis, là où ca se corse c'est une fois connecté au windows, mon prompt c'est ca:
Administrateur@WIN-NUIR7G88F58 ~
$
et non pas le basic c:\path\bidule\truc
je suis donc coincé pour le expect suivant.
j'ai testé:
expect "Administrateur@WIN-NUIR7G88F58 ~\n $ " <== marche pas
expect "Administrateur@WIN-NUIR7G88F58 ~"
expect "$ " <== marche pas
expect "Administrateur@WIN-NUIR7G88F58 ~
$" <== marche pas (mais celui la je m'en doutais c'est juste heuu... vous savez les moments ou on se dit "aller pour rire de toute facon au point ou j'en suis, sait on jamais xD"
et biensur le plus logique
expect "$ " <== à l'aire d'etre mieux mais ne fonctionne pas plus pour autant...
donc je ne sais pas trop comment faire sachant que c'est ma première utilisation d'expect du coup je ne connais pas toute sa puissance...
quelqu un a déjà eu ce soucis?? ou tout simplement une idée :) ?
Merci d'avance ;) !!
alors oui j'ai lu pas mal de site et d'explication sur cette commande et non google n'est plus mon amis parce que je n'est pas trouvé ce que jy cherchais ! ^^
c'est pourquoi je fais appel à vous :)
donc voila le but: connexion ssh depuis une debian sur un win2k8r2 + ls -l(pour l'instant)
j'ai installer openssh par cygwin.
donc pour la conenxtion ssh aucun soucis, là où ca se corse c'est une fois connecté au windows, mon prompt c'est ca:
Administrateur@WIN-NUIR7G88F58 ~
$
et non pas le basic c:\path\bidule\truc
je suis donc coincé pour le expect suivant.
j'ai testé:
expect "Administrateur@WIN-NUIR7G88F58 ~\n $ " <== marche pas
expect "Administrateur@WIN-NUIR7G88F58 ~"
expect "$ " <== marche pas
expect "Administrateur@WIN-NUIR7G88F58 ~
$" <== marche pas (mais celui la je m'en doutais c'est juste heuu... vous savez les moments ou on se dit "aller pour rire de toute facon au point ou j'en suis, sait on jamais xD"
et biensur le plus logique
expect "$ " <== à l'aire d'etre mieux mais ne fonctionne pas plus pour autant...
donc je ne sais pas trop comment faire sachant que c'est ma première utilisation d'expect du coup je ne connais pas toute sa puissance...
quelqu un a déjà eu ce soucis?? ou tout simplement une idée :) ?
Merci d'avance ;) !!
A voir également:
- Expect script tutorial
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Script cmd - Guide
- Capcut tutorial - Télécharger - Montage & Édition
4 réponses
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
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 ;-(
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é...?
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
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...
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é ;-((
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 ;)
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...
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