Connexion automatique à un switch avec expect
Résolu
Guizmo.7
-
Guizmo.7 -
Guizmo.7 -
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.
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.
A voir également:
- Expect switch
- Android switch - Accueil - Android
- Smart switch pc - Télécharger - Divers Bureautique
- Switch off - Télécharger - Divers Utilitaires
- Logiciel switch - Télécharger - Conversion & Extraction
- Switch qwerty azerty - Guide
1 réponse
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"
...
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"
...
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 !