OVH Cloud OVH Cloud

Expect peut-il m'automatiser cette sequence ?

18 réponses
Avatar
Daniel Déchelotte
Bonjour,

Voici la sequence que je dois faire pour obtenir une autorisation aupres
d'un pare-feu utilisant un OTP (one-time password, avec opiekey).


Ma machine, terminal 1 Le pare-feu Ma machine, terminal 2

telnet aaa.bbb.ccc.ddd

Bonjour
Entrez votre login

je tape mon login

Ok, voici votre "challenge"
Entrez votre resultat

Je lance opiekey avec
le "challenge" du parefeu
J'entre ma pass-phrase
J'obtiens un resultat

J'entre ce resultat (obtenu
dans le terminal 2)

Bravo
Que faites-vous ?

Je prends le choix 1

Ok, bye bye


La partie delicate est celle ou je dois lancer une autre commande (terminal
2), interactive, qui doit utiliser une chaine fournie par le serveur
telnet. Est-ce que expect peut gerer cela ?

--
Daniel Déchelotte
http://yo.dan.free.fr/

8 réponses

1 2
Avatar
Stephane Dupille
C'est pas plutôt qu'étrangement, on ne réussit jamais à retrouver
les développeurs perl ? Leurs corps disparaissent et tout ?


Non, c'est qu'ils sont très demandés.

--
C>Faisons le point une bonne fois. tu m'as un peu irrité en affirmant
C>que le point G n'existait pas. Je peux te le prouver si tu veux.
Te fatigue pas, j'ai un clitoris qui fait l'affaire.
-+- GL in <http://www.le-gnu.net> - Toutes options montées en série -+-

Avatar
Daniel Déchelotte

| > Expect est le choix parfait.
|
| Oui.
|
| > Vous pouvez poser vos questions sur Expect dans:
| > fr.comp.lang.tcl
| > comp.lang.tcl (en anglais)
|
| Pas forcément. Expect a été porté en Perl, ce qui le rend utilisable.

Mieux que ca : je decouvre l'existence de python-pexpect, qui va me
permettre d'utiliser expect tout en restant sain d'esprit !

(hehe)
(et merci pour vos reponses)

--
Daniel Déchelotte
http://yo.dan.free.fr/
Avatar
Emmanuel Florac
Le Thu, 28 Apr 2005 13:31:24 +0000, Arnaud Launay a écrit :


C'est pas plutôt qu'étrangement, on ne réussit jamais à retrouver
les développeurs perl ? Leurs corps disparaissent et tout ?


Marrant ça, moi je ne connais que des développeurs perl en fait. Ah si
et un ou deux qui font du PHP, mais à 17 ans c'est normal, plus tard ils
comprendront la vie.

--
Mais monsieur, voudriez-vous que je me l'écorchasse?
Barbey d'Aurevilly.

Avatar
Arnaud Launay
Le Thu, 28 Apr 2005 23:49:32 +0200, Emmanuel Florac écrivit:
C'est pas plutôt qu'étrangement, on ne réussit jamais à retrouver
les développeurs perl ? Leurs corps disparaissent et tout ?
Marrant ça, moi je ne connais que des développeurs perl en fait. Ah si



Ah, tu les enfermes chez toi pour les laisser macérer et les
manger plus tard ?

Arnaud.
--
Perso: http://launay.org/blog/
Consulting: http://www.cusae.com/
Hébergement: http://www.nocworld.com/


Avatar
Emmanuel Florac
Le Thu, 28 Apr 2005 23:10:17 +0000, Arnaud Launay a écrit :


Ah, tu les enfermes chez toi pour les laisser macérer et les
manger plus tard ?


Heu... voilà.

--
on passe la moitié de son temps à refaire ce que l'on n'a pas eu le
temps de faire correctement.
Loi de Myers.

Avatar
Jérémy JUST
On Thu, 28 Apr 2005 15:52:05 +0200
Daniel Déchelotte wrote:

Mieux que ca : je decouvre l'existence de python-pexpect, qui va me
permettre d'utiliser expect tout en restant sain d'esprit !


Je m'étais laissé dire que Python était entièrement objet.
Dans ce cas, ça va être une sévère galère de s'en servir comme
interface pour Expect!

--
Jérémy,
qui trouve étrange que certains langages incitent tant au troll.

Avatar
Daniel Déchelotte

| Je m'étais laissé dire que Python était entièrement objet.
| Dans ce cas, ça va être une sévère galère de s'en servir comme
| interface pour Expect!

Je pense qu'un "script expect/python" doit ressembler a du expect/tcl ou du
expect/perl. En python, ca donne ca :


#! /usr/bin/python
import pexpect

child = pexpect.spawn('telnet 11.22.33.44 1234')
child.expect('User: ')
child.sendline('dechelot')
child.expect('SKEY CHALLENGE: (?P<challenge>.*).')
challenge = child.match.group('challenge')

opiekeychild = pexpect.spawn('opiekey %s' % challenge)
opiekeychild.expect('Enter secret pass phrase: ')
# La suite ne vous regarde pas ;-)


Tranquillou.

--
Daniel Déchelotte
http://yo.dan.free.fr/
Avatar
Khaled
Daniel Déchelotte wrote:

Je pense qu'un "script expect/python" doit ressembler a du expect/tcl
ou du

expect/perl. En python, ca donne ca :


#! /usr/bin/python
import pexpect

child = pexpect.spawn('telnet 11.22.33.44 1234')
child.expect('User: ')
child.sendline('dechelot')
child.expect('SKEY CHALLENGE: (?P<challenge>.*).')
challenge = child.match.group('challenge')

opiekeychild = pexpect.spawn('opiekey %s' % challenge)
opiekeychild.expect('Enter secret pass phrase: ')
# La suite ne vous regarde pas ;-)

Tranquillou.

Daniel Déchelotte
http://yo.dan.free.fr/


En Tcl ça donne simplement:

#!/usr/bin/expect --

spawn telnet 11.22.33.44 1234
expect "User: "
send "dechelotr"
expect -re "SKEY CHALLENGE: (.+)[nr]+"
set challenge $expect_out(1,string)

spawn opiekey $challenge
expect "Enter secret pass phrase: "


Un code claire et simple! :-)

Amts, Khaled

1 2