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 :

module perl Net::SSH::Expect


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut module perl Net::SSH::Expect
    La connection sur des périphériques via SSH est un problème que j'ai constaté assez récurrent, et assez problématique vis à vis de certains périphériques cisco. Venant de trouver une solution à mon problème, je la poste en ésperant qu'elle pourra en aider certains :

    Donc pour tout ceux qui ont des problèmes avec Net::SSH::Perl ou Perl::SSH2, voir même Net::Appliance::session, voici une piste :

    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
     
    #! /usr/bin/perl
    use Net::SSH::Expect;
     
            my $ssh = Net::SSH::Expect->new (
                host => "192.168.90.100", 
                password=> 'cisco', 
                user => 'admin', 
                raw_pty => 1
            );
     
            my $enable_passwd = "cisco";
     
            my $login_output = $ssh->login();
            $ssh->run_ssh() or die "SSH process couldn't start: $!";
     
            $ssh->send("enable");
            $ssh->waitfor('Password:\s*\z', 1) or die "prompt 'password' not found after 1 second";
            $ssh->send($enable_passwd);
     
            my $ls = $ssh->exec("show hosts");
            print($ls);
     
            # When running a command that causes a huge output,
            # lets get the output line by line:
            $ssh->send("show interfaces");   # using send() instead of exec()
            my $line;
            # returns the next line, removing it from the input stream:
            while ( defined ($line = $ssh->read_line()) ) {
                print $line . "\n";  
            }
     
            # closes the ssh connection
            $ssh->close();
    Je précise que cela est tiré de la doc CPAN, et j'ai simpleéent réduit le script au minimum pour mes besoins.

    Cependant, j'ai un dernier souci : avec ce script, l'execution de plusieurs commandes ne pose aucun problème (plus de soucis de channel), mais lors d'affichage de grande sortie (genre un résultat de commande de plusieurs 10 aines de lignes), je n'arrive pas passer outre le "--More--" de cisco. Donc au final, je n'arrive recuperer dans une variable que la preéière page de l'affichage.

    Si quelqu'un a une piste ou une solution à ce problème...

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    as tu testé cette solution ?

  3. #3
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    Personnelement j'ai un problème avec le module Perl::SSH2. Malgrès une installation correcte et sans encombre du module et des dépendances, à chaque éxécution d'un "new" il me dit qu'il ne trouve pas la méthode "put" dans le fichier ssh2.pm...

    Malgrès réinstallation du module à nouveau sans erreur apparente, idem...

    Sinon je viens de me renseigner auprès de professionels cisco, et on m'a donné une commande magique resolvant mon problème :

    avant la commande ayant une sortie trop longue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ssh->exec(terminal length 0);
    et après la commande, pour revenir a la normal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ssh->exec(terminal length 24);
    Après cette solution ne sera peut être pas viable en dehors de cisco, mais hors cisco le module Net::SSH:erl fonctionne bien chez moi...

    Néanmoins je te remercie pour ton lien car cela m'a donné quelques idées pour les autres fonctions que j'ai a réaliser.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Essaye de tester le code que j'ai mis dans les sources avec ton cisco et dit moi s'il fonctionne ou non. Sinon merci pour tes précisions, ça pourra aider du monde je pense.

  5. #5
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    J'ai teste la partie connection SSH de ton script, et cela me retourne exactement la même erreur que j'obtient düs que je tente une connection via le module SSH2 :

    Net::SSH2 object version 0.30 does not match bootstrap parameter 0.3 at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/XSLoader.pm line 94.
    apres je suis sous CentOS et je me connecte sur un cisco, donc je ne peux pas tester le transfert de fichier tel qu'indique...

    ps : je viens de tilter que j'ai dit precedement que j'avais l'erreur de la methode "put" introuvable avec Net::SSH2, or cette erreur survient avec le module Net::Appliance::session. je tenais a rectifier.

    Donc pour le moment, seul solution que j'ai trouve pour la connection sur un cisco (tout modeles confondus meme catalyst) passe par l'utilisation du module Net::SSH::Expect.

    Si je parviens a trouver des solutions viables avec les autres modules je ne manquerais pas de vous en faire part.

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bon courage

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

Discussions similaires

  1. [Net::SSH::Expect] Utilisation du module
    Par JLChelin dans le forum Modules
    Réponses: 2
    Dernier message: 21/03/2013, 11h05
  2. Installation du module net:ssh:expect sous windows xp
    Par ngerbault dans le forum Modules
    Réponses: 0
    Dernier message: 24/01/2012, 10h12
  3. Module Perl Net::Packet::Dump
    Par sarnov dans le forum Modules
    Réponses: 2
    Dernier message: 28/01/2009, 12h06
  4. Perl - Net::SSH:Perl
    Par pratheep dans le forum Modules
    Réponses: 3
    Dernier message: 24/11/2008, 20h09
  5. Réponses: 6
    Dernier message: 04/11/2008, 09h51

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