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 18/10/2016, à 14: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, à 10:58)

Hors ligne

#2 Le 19/10/2016, à 14: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, à 15:58)

Hors ligne

#3 Le 20/10/2016, à 07: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, à 08: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, à 08: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