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 :

Simuler la touche échap en expect


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut Simuler la touche échap en expect
    Bonjour a tous!!

    J'ai un petit problème avec mon script. Voilà je dois me conecter en telnet à un switch linksys avec un script expect. Mais voilà la procédure de connexion sur ces switches et assez compliquer et enfaite une fois que j'ai rentré le l'User Name et le Password il faut faire 'echap" pour valider et pour pouvoir continuer.

    J'ai esseyer "\e" mais ça ne marche pas. Est ce q'une autre mannipulation est possible.

    Voilà mon 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
    spawn telnet 10.121.66.206
    sleep5
    expect "Edit"
    send "\r"
    sleep5
    expect "User Name:"
    send "R2T\r"
    sleep5
    expect "Password:"
    send "bonjour\e\t"    <= c'est ici que je dois faire échap
    sleep5
    expect "Execute"
    send "\r\r"
    expect " 1. System Configuration Menu"
    send "\cZ"      <= Faire contrôle+Z, je sais pas si ça marche! 
    sleep5
    expect ">"
    send "lcli"
    sleep5
    expect "User Name:"
    send "R2T\r"
    sleep5
    expect "#"
    send "..."
    expect eof
    Merci de votre aide!!
    PA

  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,

    Essaye avec send "bonjour\033"...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Merci de ta réponse zip31

    Mais non ça ne marche pas, ça refait une tabulation qui retourne à User Name. Puis ça ne bouge plus!

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 387
    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 387
    Par défaut
    Bonjour,

    Pour afficher le caractère de control sans l'executer sous unix, en principe, c'est:
    CTRL+V puis dans ton cas la touche Echap
    As tu essayé de l'insérer sous ce format dans ton script ?

    ce qui donnerais : send "bonjour^["

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Euh non je n'ai pas essayer sous cette forme!
    Comment dois-je faire?

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 387
    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 387
    Par défaut
    sous vi, pour écrire la ligne send "bonjour^[" (attention ici je n'ai pas mis la tabulation), tu tape sur le clavier la touche (je passes le send "bonjour" )
    Ctrl et la touche v en même temps puis la touche Echap.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    J'ai donc mit
    send "bonjour^["
    send "\t"
    ...
    et j'ai lancer le programme mais il me sort une erreur une fois qu'il essaie d'écrire l'user name.
    il me met extra characters after close-quote while executing
    send "bonjour^["
    send"\t"
    sleep2
    espect"Execute"
    ....

  8. #8
    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
    Juste un truc pour bien comprendre...

    La validation du password "en direct" sur ton switch se fait directement avec la touche échappe ?
    Ou tu valides d'abord par "Entrée" puis la touche échappe ?

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Elle se valide directement avec la touche echap.

    interface de conexion



    On fait edit
    On rentre l'user "tab" mot de passe "echap" "tab" execute ".....

  10. #10
    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
    Citation Envoyé par pierra56 Voir le message
    On fait edit
    On rentre l'user "tab" mot de passe "echap" "tab" execute ".....
    Tu dis après avoir entré l'user que tu fais "TAB" et dans ton script tu fais un "Entrée" (\r), ce n'est pas ça qui foire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    expect "User Name:"
    send "R2T\r"

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    oui mais enfaite cela n'a aucune importance, les deux font la même chose.
    Désoler!!

    Et donc le problème c'est une fois avoir rentrer l'user name et le mot de passe il faut faire échap. (aucune autre touche fonctionne même des conbinaison de touche!!! )
    Comment faire?

  12. #12
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 387
    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 387
    Par défaut
    As tu essayé avec autoexpect pour voir si lui arrive à capturer la séquence ?

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    je viens d'essayer avec autoexpect (je ne connaissait pas d'ailleur)

    et pour la fameuse touche echap il me met un caractère indéfinisable c'est à dire un carré avec des chiffre dedans!!
    c'est mauvais signe je pense!!

  14. #14
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 387
    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 387
    Par défaut
    Si tu arrives a isoler la ligne avec se caractère "bizarre", tu peux faire un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    od -c -t o1 fichier_avec_ligne_isole
    comme ça on verra de quoi il retourne.

  15. #15
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Bah apparament seserai 033!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    send -- ""
    0000000   s   e   n   d       -   -       " 033   "  \n
            163 145 156 144 040 055 055 040 042 033 042 012

  16. #16
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 387
    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 387
    Par défaut
    Et le script généré par autoexpect, il fonctionne ou il bloque au même endroit ?

  17. #17
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Alors le script généré par autoexpect marche jusqu'à ce qu'il doit faire " ctrl+z " !!!
    oui car je dois faire ctrl+z pour aller quitter un menu et pouvoir écrire en ligne de commande!
    ducoup j'ai décrypter cette partie et ça me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    send -- ""
    0000000   s   e   n   d       -   -       " 032   "  \n
            163 145 156 144 040 055 055 040 042 032 042 012

  18. #18
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 387
    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 387
    Par défaut
    Donc, a ce que je comprend, tu passe bien le "echappe" mais pas le Ctrl-Z, qui soit dit en passant, le premier (echappe) est bien un caractère de control, tandis que l'autre (Ctrl-Z), en général est un envoi du signal SUSPEND par le tty.
    Donc, a la place de l'envoie du caractère de control CtrL-Z, il faudrait que tu puisse envoyer le signal suspend... Et là, je ne connais pas assez expect pour ça.

  19. #19
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    hum hum... le signal suspend!!

    Je vais essayer de me renseigner la dessus!!

    Merci de votre aide!!

    Quelques chose à part!!
    Est ce que vous savez a quoi correspond
    "exp_continue"
    C'est pour indiquer une boucle??

  20. #20
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    j'ai trouver!!!!!!

    Enfaite il fallait remplacer la ligne d'origi ne par un "send \032"

    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    send -- "" par send -- "send \032"
    Et Boum ça fonctionne !!

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

Discussions similaires

  1. Simuler une touche par une autre sous Windows
    Par sdelaunay dans le forum Windows
    Réponses: 2
    Dernier message: 05/05/2006, 15h31
  2. Simuler une touche clavier
    Par micky13 dans le forum Langage
    Réponses: 9
    Dernier message: 17/04/2006, 21h08
  3. [Turbo Pascal] Simulation de touche du clavier
    Par trapiste dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 04/09/2004, 17h35
  4. Simulation de touche dans un richedit
    Par firejocker dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/07/2004, 17h58
  5. [Applet]simuler une touche clavier
    Par mat10000 dans le forum Interfaces Graphiques en Java
    Réponses: 19
    Dernier message: 12/12/2003, 17h23

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