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

Shell et commandes GNU Discussion :

Aide script expect


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut Aide script expect
    Bonjour,

    J'utilise un script pour envoyer des commandes cli sur un switch Cisco via expect, mon problème est que la variable $int qui correspond à la lecture d'un fichier qui contient fa0/1, fa0/4, fa0/5 ne renvoie que la première occurrence lors du passage dans la commande cli via expect: fa0/1,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    switch_test(config)#int range fa0/1,
    % Incomplete command.
    switch_test(config)#
    j'aimerai obtenir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    switch_test(config)#int range fa0/1, fa0/4, fa0/5

    Cette variable est transférée d'un script vers le script expect


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
            set int [lindex $argv 1]
    
            expect "#"
    
            send "conf t\r"
    
            expect "(config)#"
    
            expect "(config)#"
    
            send "int range $int\r"
    
    #interface range fa0/1 ,fa0/5 ,fa0/9....
    
            expect "(config-if-range)#"
    En espérant avoir été clair dans mon post je vous remercie d'avance pour votre aide.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Comment passes tu la variable à ton script expect ?
    Car ton erreur est certainement situé là.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut
    voici la boucle qui fait appel au script expect

    le fichier iplist contient une liste d'@ip
    le fichier enableint_1.sh est le script expect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    int=`cat /interface_4`
    
    while read ipadd
    do
        echo $int
        export ipadd
        export int
        /enableint_1.sh $ipadd $int
    done < /iplist
    Initialisation des variables dans expect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    #!/usr/bin/expect -f
    
            set timeout 20
            set IPaddress [lindex $argv 0]
            set int [lindex $argv 1]
    Cordialement.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    L'un des principes de base en shell: on protège ces variables entre guillemets sauf quand on sait pourquoi on ne le fait pas.

    Donc, essaye en remplaçant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /enableint_1.sh $ipadd $int
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /enableint_1.sh "$ipadd" "$int"

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    j'ajouterais que les export, sans être nuisible, sont inutiles, car les variables (qui doivent effectivement être mises entre guillemets) sont passées en arguments au script appelé dans la boucle.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut
    Excusez moi je débute en Scripting, ça fonctionne merci ! Dommage mais je viens de m'apercevoir qu'il y a une limite de 5 interfaces lorsque l'on utilise la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sw-test(config)#int range Fa0/1, Fa0/2, Fa0/6 ,Fa0/8, Fa0/10
    Encore merci pour votre aide !

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. aide script unix
    Par cora1 dans le forum Linux
    Réponses: 1
    Dernier message: 28/02/2007, 18h03
  2. Réponses: 4
    Dernier message: 28/12/2006, 18h42
  3. Aide script perl
    Par donmamio dans le forum Langage
    Réponses: 10
    Dernier message: 08/08/2006, 17h34
  4. Aide script PHP
    Par popsantiago dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2006, 22h18
  5. [Oracle 8.1.7] Aide script
    Par fmoriet dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/02/2006, 12h27

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