IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

envoyer cmd sur switch cisco et traiter resultat


Sujet :

Programmation et administration système Perl

  1. #21
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cureuil57 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	if (grep /[1-9]+ input error.*[1-9]+ CRC/, @int_CRC){
    		print "$_\n"
    	}
    }
    Je ne pense pas que ça fasse ce que tu veux (si du moins j'ai compris ce que tu voulais faire).

    Le grep va appliquer l'expression régulière à tous les éléments du tableau et, si l'un des éléments a été reconnu par l'expression régulière, renverra vrai ce qui imprimera $_, alors que $_ ne contient pas nécessairement à ce moment ce que tu veux imprimer.

    Si j'ai compris ce que tu cherches à faire (imprimer les éléments qui reconnaissent l'expression régulière), il faudrait faire, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print join "\n", grep /[1-9]+ input error.*[1-9]+ CRC/, @int_CRC;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach (@int_CRC) {
         print "$_\n" if /[1-9]+ input error.*[1-9]+ CRC/;
    }

  2. #22
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Le grep va appliquer l'expression régulière à tous les éléments du tableau et, si l'un des éléments a été reconnu par l'expression régulière, renverra vrai ce qui imprimera $_, alors que $_ ne contient pas nécessairement à ce moment ce que tu veux imprimer.
    $_ contiendra une valeur de @all_interfaces ($_ ne semble pas affecté par le grep), et c'est ce que cureuil souhaitait :
    Citation Envoyé par cureuil57 Voir le message
    Pour afficher seulement le nom de l'interface ou on détecte au moins une input error ou un CRC.
    Cela dit, je suis surpris que le grep n'ait pas d'effet de bord sur $_, et par précaution, je dirais qu'il vaut toujours mieux écrire des boucles foreach avec un symbole :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach my $interface (@all_interfaces) {
      my @int_CRC = $session->cmd("sh int $interface \| inc CRC");
      if (grep /[1-9]+ input error.*[1-9]+ CRC/, @int_CRC){
        print "$interface\n"
      }
    }
    Pour ce qui est de l'expression régulière elle-même, il faudrait connaitre la syntaxe complète des lignes analysées, mais si ça marche comme ça, pourquoi pas.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #23
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Un petit complément : à partir de la version 5.10, on peut aussi remplacer l'usage du grep par l'opérateur ~~ (smart matching), ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (grep /[1-9]+ input error.*[1-9]+ CRC/, @int_CRC){
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (@int_CRC ~~ /[1-9]+ input error.*[1-9]+ CRC/) {
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  4. #24
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    $_ contiendra une valeur de @all_interfaces ($_ ne semble pas affecté par le grep), et c'est ce que cureuil souhaitait
    OK, au temps pour moi, je ne savais pas ce qu'il voulait faire, ça me paraissait un peu curieux.

    Citation Envoyé par Philou67430 Voir le message
    Cela dit, je suis surpris que le grep n'ait pas d'effet de bord sur $_, et par précaution, je dirais qu'il vaut toujours mieux écrire des boucles foreach avec un symbole
    Il me semble bien (j'en suis quasi sûr) que map, grep et le foreach sans variable d'itération "localisent" la valeur de $_, donc a priori pas de problème (contrairement à while, qui ne le fait pas). Sinon, on ne pourrait pas écrire des choses enchaînant les opérateurs de listes du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @toto = map {...} grep {...} map {...} @titi;
    Il faut tout de même faire bien attention à ce que l'on fait, il est assez facile de se prendre les pieds dans le tapis...

  5. #25
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Sinon, on ne pourrait pas écrire des choses enchaînant les opérateurs de listes du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @toto = map {...} grep {...} map {...} @titi;
    Bon sang, mais c'est bien sûr !
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

Discussions similaires

  1. Problème connexion en ssh sur Switch CISCO
    Par Maykin dans le forum Modules
    Réponses: 2
    Dernier message: 18/04/2011, 12h00
  2. Telnet sur des switchs Cisco
    Par developpeur99 dans le forum Langage
    Réponses: 1
    Dernier message: 14/10/2010, 21h35
  3. Perte du lien réseau sur le port d'une switch Cisco
    Par annedeblois dans le forum Hardware
    Réponses: 5
    Dernier message: 30/07/2010, 18h11
  4. Spanning Tree sur switch cisco catalyst 3525 : pvst et IEEE
    Par klkklk dans le forum Développement
    Réponses: 0
    Dernier message: 06/10/2008, 14h13
  5. Réponses: 3
    Dernier message: 05/03/2007, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo