Rechercher : dans
Par :

Connexion automatique à un switch avec expect

Dernière réponse le 17 fév 2009 à 14:56:57 Guizmo.7, le 17 fév 2009 à 11:28:22 
 Signaler ce message aux modérateurs

Bonjour,

J'essaye de créer un programme sous linux qui va se connecter à un switch et récupérer des infos de manière automatique grace à expect, send et spawn.
Mais il y a certainement quelques concepts qui m'échappent car à la fin du programme, je ne retrouve pas la main.
Voici le programme :

#!/usr/bin/expect -f
set timeout -1
set telnet_ip [lindex $argv 0]
set login $env(login)
set password $env(password)
set send_slow {1 .1}
spawn $env(SHELL)
match_max 100000
sleep .1
send "telnet $telnet_ip\r"
sleep 1
send "$login\r"
expect "Please Enter Password: "
sleep .1
send "$password\r"
expect "*# "
sleep .1
send "term length 1000\r"
expect "*# "
sleep .1
send "show int config\r"
expect "*# "
sleep .1
send "show int brief\r"
expect "*# "
sleep .1
send "show system-information\r"
expect "*# "
sleep .1
send "show run\r"
expect "*# "
sleep .1
send "logo\r"
expect "Do you want to log out"
sleep .1
send "y\r"
sleep .1
send "exit"
expect eof
exit

Et voila la trace (juste la fin) :

Connection closed by foreign host.
prompt$

je suis coincé :(
je ne peux sortir qu'avec un control-C
exemple :
^Cprompt$
prompt$
prompt$ et voila

Mais comme vous pouvez le voir, je suis coincé à la fin du script. je dois faire control-C pour quitter le processus et revenir sur mon bash.

Avez-vous déjà eu ce problème ? D'où cela peut-il bien venir ?

Merci d'avance.

Meilleures réponses pour « Connexion automatique à un switch avec expect » dans :
[XP] Windows ne peut pas configurer cette connexion sans fil VoirSi vous avez le message d'erreur suivant : Windows ne peut pas configurer cette connexion sans fil, si vous avez autorisé un autre programme à gérer cette connexion sans fil, utilisez ce programme, si vous voulez que windows configure cette...

1

dubcek, le 17 fév 2009 à 12:22:44

Hello
c'est un Cisco ?
ne faut-il pas envoyer enable après le premier password ?
un bout d'un ancien script:

set switch $env(SWITCH)
log_file $LOG
spawn telnet $switch
expect "Password: "
send "$password\r"
set prompt "${switch}>"
expect -re $prompt
send "enable\r"
expect "Password: "
send "$password\r"
set prompt "${switch}#"
expect -re $prompt
send "show mac-address-table\r"
...

Répondre à dubcek

2

 Guizmo.7, le 17 fév 2009 à 14:56:57

Merci de ta réponse dubcek.
C'est un HP et j'ai déjà testé donc je suis sur des commandes lancés.

En fait j'ai résolu mon probleme tout seul et pour qu'il puisse servir à d'autres voila la solution :
Il suffisait d'enlever 'expect eof' avant le dernier exit car il attendait la fin de fichier (End Of File) sans jamais l'avoir.

Voila, bon courage à vous !

Répondre à Guizmo.7