#1 Le 18/10/2016, à 15:20
- elladan35
[Résolu]Expect, suite de variables dans une liste
Bonjour,
Je suis en train d'élaborer un script permettant d'automatiser des tâches sur équipements Cisco et je rencontre actuellement un problème.
En effet, avec la commande "dir /recursive | include bin", je récupère la liste des images ISO se trouvant dans l'équipement en question.
Voici un exemple :
dir /recursive flash: | include bin
Taille Nom
4 -rwx 11832054 Sep 21 2016 14:21:50 +02:00 c2960-lanbasek9-mz.150-2.SE10.bin
5 -rwx 6418115 Sep 21 2016 14:56:24 +02:00 c2960-lanbasek9-mz.122-40.SE.bin
560 -rwx 9813681 Mar 1 1993 01:07:34 +01:00 c2960-lanbasek9-mz.122-55.SE5.bin
Nous pouvons voir ici qu'il y a 3 images différentes (il pourrait y en avoir plus où moins).
J'aimerais, dans mon script Expect, pouvoir récupérer dans une liste les nom et tailles de chacune des images se trouvant dans mon équipement.
Pour l'instant, grâce à la commande " expect "#" {set c "$expect_out(buffer)"} ", je récupère la totalité des 3 lignes en question mais je ne sais pas comment faire en sorte de récupérer seulement la taille et le nom (un peut comme un "awk" sous bash).
Merci de vos réponses.
Cordialement.
Modération : merci à l'avenir d'utiliser les balises code (explications ici).
Dernière modification par elladan35 (Le 20/10/2016, à 11:58)
Hors ligne
#2 Le 19/10/2016, à 15:14
- elladan35
Re : [Résolu]Expect, suite de variables dans une liste
Je viens de trouver.
Voici le code que j'ai pondu :
send "dir /recursive flash: | include bin\r"
expect "#" {set c "$expect_out(buffer)"}
foreach line [split $c "\n"] {
if {[regexp {dir /recursi} $line] || [regexp {\#} $line]} {
} else {
regsub -all { +} $line " " line
regexp {00 (.*)} $line matched nameios
regexp {rwx (\d+) } $line matched tailleios
send_user "$tailleios $nameios\n"
}
}
Maintenant, j'aimerais faire en sorte que les variables tailleios et nameios puissent s'intégrer dans un tableau pour former un couple taille / nom pour chaque images se trouvant dans l'équipement.
Modération : merci à l'avenir d'utiliser les balises code (explications ici).
Dernière modification par cqfd93 (Le 19/10/2016, à 16:58)
Hors ligne
#3 Le 20/10/2016, à 08:59
- serged
Re : [Résolu]Expect, suite de variables dans une liste
C'est quoi cette commande "include" ? Pas trouvée dans les différentes pages de man sur le net...
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne
#4 Le 20/10/2016, à 09:14
- elladan35
Re : [Résolu]Expect, suite de variables dans une liste
Bonjour,
La commande "dir /recursive flash: | include bin" est une commande Cisco.
Le "include" permet de filtrer la recherche comme avec un "grep" sous Linux.
Hors ligne
#5 Le 20/10/2016, à 09:32
- elladan35
Re : [Résolu]Expect, suite de variables dans une liste
J'ai améliorer mon script.
send "dir /recursive flash: | include bin\r"
expect "#" {set c "$expect_out(buffer)"}
set i 0
foreach line [split $c "\n"] {
if {[regexp {dir /recursi} $line] || [regexp {\#} $line]} {
} else {
regsub -all { +} $line " " line
regexp {00 (.*bin)} $line matched nameios
regexp {rwx (\d+) } $line matched tailleios
set tableau1($i) "$tailleios"
set tableau2($i) "$nameios"
set i [incr i]
}
}
De cette façon, mes 3 taillesios et mes 3 nameios vont directement dans un tableau.
Voici un affichage :
send_user "[array get tableau1]\n"
0 11832054 1 6418115 2 9813681
send_user "[array get tableau2]\n"
0 c2960-lanbasek9-mz.150-2.SE10.bin 1 c2960-lanbasek9-mz.122-40.SE.bin 2 c2960-lanbasek9-mz.122-55.SE5.bin
Il faut maintenant que j'arrive à récupérer les valeurs sans leur index (les numéros 0,1 et 2) pour que je puisse continuer.
Hors ligne