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 :

Problème script expect


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Par défaut Problème script expect
    Bonjour à tous, Voila j'ai un script shell de type expect qui me permet d'ouvrir minicom, apres avoir réalisé mes commandes je souhaite quitter et fermer le process minicom, le probleme c'est que ca ne se ferme pas, j'ai essayé beaucoup de chose mais en vain,
    voila le script
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    #!/usr/bin/expect -f
    set arg1 [lindex $argv 0]
    set arg2 [lindex $argv 1]
     
     
    spawn minicom
     
    expect {  "#"
              "password:"
              "Q0"
    }
    set timeout 15;
    send "\r"
      expect "buildroot login:"
      # Send the username
      send "root\r"
    set timeout -1; 
      expect "#"
    send "\r"
     expect "#"
      # Send the prebuilt command, and then wait for another shell prompt.
    send "test_general_zapper_st -g 0-$arg1-$arg2\r"
    set timeout  -1; #the timeout must be bigger than the timeout of the fct poll in the test. 
    expect "#"
    expect eof

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Le code ci-dessous marche chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    expect -gl "\\\[*]\$*"
    send -- "\u0001x\n"	# Envoie CTRL-A X
    expect -gl "\\\[*]\$*"
    send -- "\n"		# Répond à la question "Quittez minicom ? (Yes - No)"
    exit

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Par défaut
    Je vais l essayer au boulot lundi et je reviendrai vers toi.. j espere que c va marcher

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Par défaut
    ca marche toujours pas es ce que les modifs sont justes?
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    #!/usr/bin/expect -f
    set arg1 [lindex $argv 0]
    set arg2 [lindex $argv 1]
     
    spawn minicom
    expect {  "#"
              "password:"
              "Q0" 
              ">"
    }
    set timeout 15;
    send "\r"
      expect "buildroot login:"
     
      send "root\r"
    set timeout 5; 
      expect { "#" 
               ">"
    }
    set timeout 5; 
    send "\r"
    send "\r"
    expect { "#" 
             ">"
    }
     
    send "test_general_zapper_st -g 0-$arg1-$arg2\r"
    set timeout  -1; 
    expect { "#" 
             ">"
    }
    send "\r"
    expect -gl "#"
    send "\u0001x\n"
    	# Envoie CTRL-A X
    expect -gl "#"
    send "\n"		# Répond à la question "Quittez minicom ? (Yes - No)"
    exit

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Peut être est-ce les séquences d'échappement qui ne correspondent pas à ton système

    Tiens j'avais trouvé ce petit programme à lancer sous expect afin de trouver comment sont interprétées les différentes touches.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/expect
     
    exp_internal 1
    log_user 1
    while 1 {
            expect_user -re ".+" 
            }
    Il suffit de rendre le programme exécutable et de le lancer, ensuite il faut appuyer sur les touches désirées, dans ton cas "CTRL-A X" puis d'appuyer sur la touche ENTRÉE et enfin "CTRL-C" pour interrompre le programme.
    Après il n'y a qu'à regarder comment sont envoyées les séquences d'échappement.

    Ci-après l'exemple chez moi pour "CTRL-A X" :

    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
    $ ./script_test.sh 
    Gate keeper glob pattern for '.+' is ''. Not usable, disabling the performance booster.
     
    expect: does "" (spawn_id exp0) match regular expression ".+"? (No Gate, RE only) gate=yes re=no
    ^Ax
     
    expect: does "\u0001x\n" (spawn_id exp0) match regular expression ".+"? (No Gate, RE only) gate=yes re=yes
    expect: set expect_out(0,string) "\u0001x\n"
    expect: set expect_out(spawn_id) "exp0"
    expect: set expect_out(buffer) "\u0001x\n"
    Gate keeper glob pattern for '.+' is ''. Not usable, disabling the performance booster.
     
    expect: does "" (spawn_id exp0) match regular expression ".+"? (No Gate, RE only) gate=yes re=no
    ^Csighandler: handling signal(2)
    async event handler: Tcl_Eval(exit 130)

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    expect: does "\u0001x\n" (spawn_id exp0) match regular expression ".+"? yes
    merci pour le script ca me renvoie la meme chose , mon script se plante juste apres la fin de l'execution de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     send "test_general_zapper_st -g 0-$arg1-$arg2\r"
    ca me renvoie mon " # " mais apres plus rien . Mon timeout ne peut creer prob?

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

Discussions similaires

  1. Problème script a plusieurs
    Par cyrill.gremaud dans le forum ASP
    Réponses: 3
    Dernier message: 06/04/2006, 23h08
  2. problème script
    Par Didjetridoo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/04/2006, 15h12
  3. [Débutant] Problème script ressource tuto
    Par MaN@eDeN dans le forum Windows
    Réponses: 8
    Dernier message: 08/03/2006, 23h20
  4. Problème : Script PHP IE NOK Firefox OK
    Par Saiyan dans le forum Langage
    Réponses: 40
    Dernier message: 15/11/2005, 23h59

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