Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/09/2016, à 14:38

elladan35

[Résolu] Expect, récupérer le contenu d'un "send"

Bonjour, je suis apprenti et on m'a demandé de mettre en place un script permettant de update automatiquement les commutateurs Cisco de l'entreprise.
Remarque, ce script utilise le langage "Expect"

Tout ce passait relativement bien jusqu'à maintenant. En effet, sachant que je veux mettre à jour les IOS de mes commutateurs Cisco, Il me faut connaitre la place restante dans la mémoire flash.
De cette façon, je pourrais voir si la nouvelle IOS rentrera ou non.

Ainsi, via la commande "show flash: | include bytes total" entrée sur le commutateur Cisco, je récupère les données suivantes :
"32514048 bytes total (7152640 bytes free)".

Voila donc mon problème, j'aimerais pouvoir mettre en variable le nombre de bytes restant (ici 7152640 )qui, bien sûr, varie pour chaque commutateur.

Actuellement, dans mon script Expect j'ai fait les lignes suivantes :

send -- "show flash: | include bytes total\r"
expect "#"

La commande "send" écrit donc la commande qui me renvoie le résultat, et c'est donc dans ce résultat là que j'aimerais pouvoir récupérer une partit de la ligne et non pas la totalité.

Cela fait un moment que je suis bloqué, n'étant pas très bon dans tout ce qui est l’élaboration de script je suis un peut perdu avec toutes les données que je peux trouver sur Internet.

C'est pour cela que je fais appel à quelqu'un comprenant mon problème et pouvant m'aider.

Cordialement,
Mr Potier

Dernière modification par elladan35 (Le 23/09/2016, à 10:10)

Hors ligne

#2 Le 19/09/2016, à 09:10

elladan35

Re : [Résolu] Expect, récupérer le contenu d'un "send"

Je vois que Expect n'est pas utilisé par beaucoup de personnes.
Tant pis pour moi. sad

Hors ligne

#3 Le 19/09/2016, à 13:29

credenhill

Re : [Résolu] Expect, récupérer le contenu d'un "send"

hello

expect "%"
# Capture the results of the command into a variable. This can be displayed, or written to disk.
set results $expect_out(buffer)

https://fr.wikipedia.org/wiki/Expect

Hors ligne

#4 Le 19/09/2016, à 14:10

credenhill

Re : [Résolu] Expect, récupérer le contenu d'un "send"

essayer avec une regexp pour ne garder que les chiffres après (

expect -re "([0-9]+"

Hors ligne

#5 Le 20/09/2016, à 11:08

elladan35

Re : [Résolu] Expect, récupérer le contenu d'un "send"

Bonjour,
J'ai donc essayé ta commande crédenhill.
Elle me retourne l'erreur suivante :

invalid command name "0-9"
while executing
"0-9"
    invoked from within
"expect -re "([0-9]+""

Hors ligne

#6 Le 20/09/2016, à 14:49

credenhill

Re : [Résolu] Expect, récupérer le contenu d'un "send"

essayer ca
var contient 7152640

...
expect -re {([0-9]+.*\()([0-9]+)}
set var $expect_out(2,string)

Hors ligne

#7 Le 20/09/2016, à 14:51

elladan35

Re : [Résolu] Expect, récupérer le contenu d'un "send"

Bonjour,

c'est bon j'ai trouvé.

J'ai fait ce qui est marqué ci-dessous :

expect "#" {send "show flash: | include bytes total\r"}
expect "#" {set a "$expect_out(buffer)"}
regexp {\((\d+) bytes free} $a matched size
send_user "$size\n"

Merci beaucoup tout le monde.

Dernière modification par elladan35 (Le 20/09/2016, à 14:57)

Hors ligne