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 :

Code CTRL- i


Sujet :

Programmation et administration système Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Points : 12
    Points
    12
    Par défaut Code CTRL- i
    Bonjour à tous,

    J'ai un problème de login sur mes switchs.

    Une fois une session telnet établie sur mes switchs je dois envoyer la combinaison ctrl-y et seulement ensuite j' arrive à l'invite Enter Username et Enter Password. Pour se faire j'utilise la fonction login() mais cela ne fonctionne pas. Lorsque je fais une capture avec un get(), je peux lire "Username not set". J'en déduis que je me trouve sur Enter Password au lancement de ma fonction login() et non sur Enter Username!

    j'aimerai renvoyer donc dans mon script la touche ctrl+i ou flèche vers le haut afin de pouvoir remonter d'un champ de saisi vers un autre.

    Exemple: Enter Username :_______
    Enter Password:_________

    PS: sur mes routeurs je n'ai pas de souci!

    Merci d'avance à vous ;-)

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 87
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    Suivant ton système, tu peux simuler cette touche en envoyant un chr(X) ou X représente ta touche.

    Mais ça dépend vraiment du système sur lequel tu tournes..

    Cdt,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Bonjour à tous,

    J'ai trouvé que /011 correspond au CTRL-i ( HT (Horizontal tab) mais cela ne marche toujours pas, je suis un peu perdu!

    Si quelqu'un peut m'aider, ci-dessous la partie de mon code qui me pose problème:
    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
     
    if ($TELNET->open($HOST))
       {
        $TELNET->waitfor("Enter Ctrl-Y to begin.");
        $TELNET->print("\031");
        $TELNET->login("tftpbackup","tftpbackup");
        $TELNET->waitfor("IP Configuration/Setup...");
        $TELNET->print("c");
        $TELNET->waitfor("$prompt");
        $TELNET->print("en\n");
        $TELNET->waitfor("$prompt");
        $TELNET->print("show ip\n");
        sleep 1;
        @result=$TELNET->get();
        $TELNET->waitfor("$prompt");
        print @result;
         }
     else
        {
           print("telnet pas possible\n");
        }
    Get(): m'affiche toujours username not set!
    Lorsque je fais le test manuellement, pour analyser les différentes étapes, j'ai l'impression que quand login() est appelé je me retrouve sur la saisie Enter password et no sur Enter Username!

    Un grand UP les amis! ;-)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    UP Please!

  5. #5
    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
    Si login ne fonctionne pas bien, il faut peut-être :
    - soit correctement définir le prompt lors de la création de l'objet Net::Telnet, comme indiqué dans la doc:
    use Net::Telnet ();
    $t = new Net::Telnet (Timeout => 10,
    Prompt => '/bash\$ $/');
    - utiliser la méthode de login manuelle décrite dans la doc de Net::Telnet, à savoir :
    Use a combination of print() and waitfor() as an alternative to login() or cmd() when they don't do what you want.
    Il faut donc que tu identifies très clairement (à l'aide de chat par exemple) quel prompt ton équipement envoie pour le login, puis pour le password.
    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

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Que j'utilise la fonction waitfor() ou login() j'ai le même problème.
    Comment savoir ce que me renvoie le prompt?
    Je n'ai pas eu de souci concernant l'envoi de mes autres commandes waitfor() (ex; "Enetr send Ctrl-y to begin." ou "Ip Configuration/Setup..", et etc...)

    Pour info:
    une capture de l'écran après q'une session telnet soit établie:
    http://imageshack.us/photo/my-images/841/login1h.png/


    Une capture d'écran de l'invite radius :
    http://imageshack.us/photo/my-images/703/login2f.png/


    une capture d'écran du retour du get():
    http://imageshack.us/photo/my-images/221/loginet.png/

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 87
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    je ne connais pas Net::telnet, j'utilise Expect, mais as-tu regardé du coté des logs?

    Citation Envoyé par cpan
    $obj = new Net::Telnet ([Binmode => $mode,]
    [Cmd_remove_mode => $mode,]
    [Dump_Log => $filename,]
    ...
    [Input_log => $file,]
    ...
    [Option_log => $file,]
    ...
    [Output_log => $file,]

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    j'ai utlisé la commandr dump_log dans mon script:

    $TLENET->waitfor("Enter CTRL-y to begin.");
    $TELNET->print("\cY");
    $TELNET->dump_log("avantlogin.txt");
    $TELNET->login("dupont","mdp");
    $TELNET->dump("apreslogin.txt");
    .
    .
    .

    avantloin.txt donne:
    < 0x003c0: 20 2a 0a 0d 1b 5b 31 34 3b 31 48 20 20 2a 2a 2a *...[14;1H ***
    < 0x003d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
    < 0x003e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
    < 0x003f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
    < 0x00400: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 0d 1b 5b ************...[
    < 0x00410: 31 35 3b 31 48 0a 0d 1b 5b 31 36 3b 31 48 45 6e 15;1H...[16;1HEn
    < 0x00420: 74 65 72 20 43 74 72 6c 2d 59 20 74 6f 20 62 65 ter Ctrl-Y to be
    < 0x00430: 67 69 6e 2e 1b 5b 31 38 3b 33 48 2a 2a 2a 2a 2a gin..[18;3H*****
    < 0x00440: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
    < 0x00450: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
    < 0x00460: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
    < 0x00470: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 1b 5b 31 39 3b 33 **********.[19;3
    < 0x00480: 48 2a 2a 2a 20 45 74 68 65 72 6e 65 74 20 53 77 H*** Ethernet Sw
    < 0x00490: 69 74 63 68 20 34 37 30 2d 34 38 54 20 20 20 20 itch 470-48T
    < 0x004a0: 20 1b 5b 31 39 3b 36 33 48 2a 2a 2a 1b 5b 32 30 .[19;63H***.[20
    < 0x004b0: 3b 33 48 2a 2a 2a 20 4e 6f 72 74 65 6c 20 20 20 ;3H*** Nortel
    < 0x004c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
    < 0x004d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
    < 0x004e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a *
    < 0x004f0: 2a 2a 1b 5b 32 31 3b 33 48 2a 2a 2a 20 43 6f 70 **.[21;3H*** Cop
    < 0x00500: 79 72 69 67 68 74 20 28 63 29 20 31 39 39 36 2d yright (c) 1996-
    < 0x00510: 32 30 30 39 2c 20 20 41 6c 6c 20 52 69 67 68 74 2009. All Right
    < 0x00520: 73 20 52 65 73 65 72 76 65 64 20 20 20 20 20 20 s Reserved
    < 0x00530: 20 20 20 20 20 2a 2a 2a 1b 5b 32 32 3b 33 48 2a ***.[22;3H*
    < 0x00540: 2a 2a 20 45 53 53 20 33 2e 37 20 53 53 48 1b 5b ** ESS 3.7 SSH.[
    < 0x00550: 32 32 3b 36 33 48 2a 2a 2a 1b 5b 32 33 3b 33 48 22;63H***.[23;3H
    < 0x00560: 2a 2a 2a 20 48 57 3a 33 33 20 20 20 20 20 20 20 *** HW:33
    < 0x00570: 46 57 3a 33 2e 36 2e 30 2e 37 20 20 20 53 57 3a FW:3.6.0.7 SW:
    < 0x00580: 76 33 2e 37 2e 36 2e 30 31 20 49 53 56 4e 3a 32 v3.7.6.01 ISVN:2
    < 0x00590: 20 1b 5b 32 33 3b 36 33 48 2a 2a 2a 1b 5b 32 34 .[23;63H***.[24
    < 0x005a0: 3b 33 48 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ;3H*************
    < 0x005b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
    < 0x005c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
    < 0x005d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
    < 0x005e0: 2a 2a 1b 5b 3f 32 35 6c 1b 5b 31 34 3b 31 48 1b **.[?25l.[14;1H.
    < 0x005f0: 5b 32 4b 1b 5b 34 3b 31 48 1b 5b 32 4b 1b 5b 34 [2K.[4;1H.[2K.[4
    < 0x00600: 3b 32 36 48 55 73 65 72 6e 61 6d 65 3a 20 5b 20 ;26HUsername: [
    < 0x00610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
    < 0x00620: 5d 1b 5b 35 3b 33 36 48 1b 5b 37 3b 31 6d 5b 20 ].[5;36H.[7;1m[
    < 0x00630: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 ***************
    < 0x00640: 5d 1b 5b 30 6d 1b 5b 31 34 3b 32 36 48 45 6e 74 ].[0m.[14;26HEnt
    < 0x00650: 65 72 20 50 61 73 73 77 6f 72 64 3a 20 1b 5b 3f er Password: .[?
    < 0x00660: 31 34 6c 1b 5b 32 4a 1b 5b 31 3b 33 38 48 4e 65 14l.[2J.[1;38HNe
    < 0x00670: 74 4c 6f 67 69 6e 1b 5b 34 3b 32 36 48 55 73 65 tLogin.[4;26HUse
    < 0x00680: 72 6e 61 6d 65 3a 20 1b 5b 37 3b 31 6d 5b 20 20 rname: .[7;1m[
    < 0x00690: 5d 1b 5b 35 3b 33 36 48 1b 5b 37 3b 31 6d 5b 20 ].[5;36H.[7;1m[
    < 0x006a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 ***************
    < 0x006b0: 5d 1b 5b 30 6d 1b 5b 32 33 3b 31 48 1b 5b 32 4b ].[0m.[23;1H.[2K
    < 0x006c0: 45 6e 74 65 72 20 74 65 78 74 2c 20 70 72 65 73 Enter text. pres
    < 0x006d0: 73 20 3c 52 65 74 75 72 6e 3e 20 6f 72 20 3c 45 s <Return> or <E
    < 0x006e0: 6e 74 65 72 3e 20 77 68 65 6e 20 63 6f 6d 70 6c nter> when compl
    < 0x006f0: 65 74 65 2e 1b 5b 31 34 3b 32 36 48 45 6e 74 65 ete..[14;26HEnte
    < 0x00700: 72 20 55 73 65 72 6e 61 6d 65 3a 20 r Username:

    > 0x00000: ff fd 01 ÿý.

    > 0x00000: 74 66 74 70 62 61 63 6b 75 70 0d 0a tftpbackup..

    < 0x00000: 1b 5b 31 34 3b 31 48 1b 5b 32 4b 1b 5b 31 34 3b .[14;1H.[2K.[14;
    < 0x00010: 32 36 48 45 6e 74 65 72 20 50 61 73 73 77 6f 72 26HEnter Passwor
    < 0x00020: 64 3a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 1b 5b 31 d: **********.[1
    < 0x00030: 34 3b 32 36 48 1b 5b 32 4b 55 73 65 72 6e 61 6d 4;26H.[2KUsernam
    < 0x00040: 65 20 6e 6f 74 20 73 65 74 2e e not set.

    -_______________________________________________________________________
    apreslogin.txt:
    rien

  9. #9
    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 Mustaal Voir le message
    Comment savoir ce que me renvoie le prompt?
    La réponse dans mon post précédent (ainsi que celle de Dra_Gun)
    Citation Envoyé par Philou67430 Voir le message
    Il faut donc que tu identifies très clairement (à l'aide de chat par exemple) quel prompt ton équipement envoie pour le login, puis pour le password.
    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

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Bonjour à tous,

    J'ai réussi à résoudre mon problème en utilisant la fonction de put("\cY") au lieu de print("\cY")! Je n'ai pas pensé que la fonction print() renvoyé automatique un \n, donc ceci explique pourquoi je me retrouvait sur Enter password au lieu de Enter Username!

    Tout con! Comme quoi toujours bien lire les docs des fonctions ;-)

    Merci pour tout pour votre aide!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        $TELNET->waitfor("Enter Ctrl-Y to begin.");
        $TELNET->put("\cY");
        $TELNET->login("tftpbackup","tftpbackup");
        $TELNET->waitfor("IP Configuration/Setup...");
        $TELNET->print("c");
        .
        .
        .
        .

  11. #11
    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
    Ce n'est pas la 2e fois que tu te fais avoir par un \n ou \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

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    hmmm, c'est la 1° fois , en tout cas je crois ;-)

  13. #13
    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
    Alors je dois confondre avec un autre sujet, très récent.

    Edit : exact, c'était ici, et ce n'était pas toi
    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. [Toutes versions] Syntaxe pour intégrer "ctrl+C" dans du code vba.
    Par Mat08 dans le forum IHM
    Réponses: 6
    Dernier message: 04/06/2010, 00h57
  2. [CS4] Activer CTRL+D en mode édition code
    Par vallica dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 22/06/2009, 22h40
  3. code Ctrl-haut et Ctrl-bas
    Par iliass001 dans le forum C
    Réponses: 2
    Dernier message: 05/02/2009, 12h14
  4. Réponses: 3
    Dernier message: 05/01/2009, 09h39
  5. Code ASCII correspondant à Ctrl+V (Coller)
    Par mouloudéen dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/05/2007, 17h40

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