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

Modules Perl Discussion :

CPAN Telnet


Sujet :

Modules Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut CPAN Telnet
    Bonjour a tous

    Bon je viens de lire la dock de cpan

    alors pour envoyer une commande a un switch j utilise la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $telnet->print ('');
    ms pour qu elle fonctionne je suis obliger de mettre un waitfor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @test=$telnet->waitfor(String => '#');
    j aimerai que le waitfor recupere n importe quelle caractere, donc attende n importe kwa comme caractere,...que je sois pas limite au '#'
    Quelqu un sait m aider sur ce coup ?
    qu est ce que je dois faire pour ca ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    J ai trouve quelque chose de mieux deja avec la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @test=$telnet->waitfor("/>|#/");
    suffit de specifier les caracteres qu on peut trouver :o
    C est la meilleur solutions ?

  3. #3
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Euh ... Avec quel module fais tu ça ?

    Net::Telnet
    ou
    Net::Telnet::Cisco ?

    Par ailleurs, il me semble que le waitfor te permet d'attendre que le switch te rende la main avec son prompt ... Il me paraît imprudent d'attendre n'importe quoi comme caractère. D'autant que le prompt est différent selon le mode d'exploitation du switch (interrogation de conf, ou configuration proprement dite).

    Alors ... peux tu nous en dire plus ?

    [Edit]Visiblement, tu as progressé sur le problème pendant que je tapais ma réponse ...[/Edit]
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    j utilise net:telnet

    j essaye de faire un hyper terminal en perl pour prendre la main donc je suis oblige de recupere n importe quel caractere, afin de visualiser ou j en suis ds le switch =)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    note hyper terminal est peut etre deja programmer en perl lol...

    J ai pt etre dit une connerie :p mdr

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Bon voila je vous montre mon code

    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
    40
    41
     
    #!/usr/bin/perl -w
    use Net::Telnet ();
     
    sub QuitterApplication
    {
        exit(0);
        }
     
     
    my ($hostname, $port, $telnet); 
    $hostname="172.16.40.3"; 
    $port="23"; 
    $timeout_time=3;
    my ($forecast, $t);
    $telnet = new Net::Telnet ( Timeout=>$timeout_time, Errmode=>'die'); 
    $telnet->open(Host => $hostname, Port => $port);
     
    my $prematch=();
    my $match=();
    my $x=0;
    my $reponse=();
     
    ($prematch,$match)=$telnet->waitfor("/>|#|%|:/");
    print "$prematch$match";
    $prematch=();
    while ($x != 1){
         $reponse=<STDIN>;
         chop $reponse;
     
         if ($reponse eq "quit"){exit (0)}
         $telnet->print("$reponse");
         ($prematch,$match)=$telnet->waitfor("/>|#|%|:/");
         $prematch=~s/$reponse//;
         $reponse=();
         print "$prematch$match";
         if ($match =~/%/){
             ($prematch,$match)=$telnet->waitfor("/>|#|%|:/");
             print "$prematch$match";
            }
        }
    alors j ai un probleme qd je fais des sh run par exemple, on dirait qu il peut pas recuperer la suite, vous pouvez m expliquer pq et comment resoudre le probleme s il vous plait ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Bon personne ne sait m aider

  8. #8
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Slt !

    J'y connais pas grand chose en routeur, mais tu ne devrais pas t'authentifier quand tu fais un telnet dessus ? Je ne vois nulle part de ligne $telnet->login(...) ?

    @+
    Mr6

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    non pas besoin de s authentifier, il peut juste y avoir deux trois password a rentrer ms avec un $telnet->print("") c bon.

    Quelqu un peut m explique pq qd j utilise un @output=$telnet->cmd("sh run") ca fonctionne pas ?

    Comment on utilise cette commande ?

  10. #10
    En attente de confirmation mail Avatar de gd_dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Points : 129
    Points
    129
    Par défaut
    Bonjour,

    Veuillez consulter le document suivant. http://rcswww.urz.tu-dresden.de/CS/perl/modules/Telnet/Telnet.html

    Bonne chance

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Bon j ai lu le site j ai mit le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $telnet= new Net::Telnet(Prompt=>"/.*\[#>]\$/i",Timeout => 10, Errmode => "return");
    puis apres j utilise le cmd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @output=$telnet->cmd($command);
    Donc $command envoie une ligne et $output recupere le resultat apres l envoie.

    Le probleme est que le outout est vide. Qu est ce uqe j ai oublie ?

  12. #12
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    A première vue, je dirais que ton prompt n'est pas bon. Je te conseille d'utiliser : /[#|>]/. Ici, le 'i', ne te sert à rien puisque que tu n'as pas de caratère alphanumérque dans ton expression régulière.
    Sur Cisco, si on ne prends pas en compte les différents prompt du 'configure terminal', il n'y a que deux prompts 'généraux' possibles : '>' pour le mode standard et le '#' pour le mode enable.
    C'est donc tout ce dont tu dois t'occuper.
    Si tu as des soucis, je pourrais essayer ton code, j'ai pas mal d'eqt Cisco sous la main.
    Verre vide je te plains, verre plein, je te vide.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Tu avais raison ca deconne au niveau du prompt =). Donc si j utilise
    il recupere bien quelque chose dans ds le output, le probleme c qu il ne recupere pas dutout le sh run avant, il chope juste la derniere ligne donc le nom du router ou du swtich.
    Il y a qd meme un moyen de prendre tout ce qui est envoye avant la fin.
    Je dois creer un prompt qui detecte tous les caracteres ? :o
    Je comprend pas tres bien cette commande cmd. Je pensais qu elle recuperait tous ce qui est envoyé jusqu a ce qu il arrive au prompt.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    help m en sort tj pas

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Voila quelqu un m a donner la solution a mon probleme, je vais qd meme expliquer le pourquoi du comment. Le programme fonctionne bien en soit ca vient a bugger lorsque l on fait un sh run parce qu il y a des --more-- lors du defilement des donnee.

    Pour enlever le more il il faut envoyer au router ou au switch la commande "term len 0"

  16. #16
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Au risque (assumé) de paraître lourd, tu t'es peut-être un peu fourvoyé en voulant utiliser Net::Telnet pour dialoguer avec ton switch, dans la mesure où un module plus spécifique existe :

    Net::Telnet::Cisco gère la communication en traitant correctement le --more-- ... et c'est une solution qui avait été envisagée dès le 3e post de cette enfilade ...

    Mais le principal est que tu aies résolu ton problème !
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

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

Discussions similaires

  1. [RESEAUX] SSH / Telnet et serveur X
    Par KORTA dans le forum Administration
    Réponses: 32
    Dernier message: 26/06/2007, 15h20
  2. telnet en script
    Par vinny dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 26/10/2004, 08h55
  3. Shutdown par telnet
    Par jere dans le forum Développement
    Réponses: 2
    Dernier message: 03/06/2004, 11h34
  4. code ascii en telnet
    Par Jeh dans le forum Modules
    Réponses: 3
    Dernier message: 02/02/2004, 17h01
  5. [telnet] test de ports
    Par gogozep001 dans le forum Développement
    Réponses: 4
    Dernier message: 09/12/2003, 01h36

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