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 :

Connexion à un switch Cisco en SSH. Net::SSH::Perl? Net::SSH::W32Perl? Net::SSH2?


Sujet :

Modules Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Connexion à un switch Cisco en SSH. Net::SSH::Perl? Net::SSH::W32Perl? Net::SSH2?
    Bonjour,

    Je me décide à poster ici car je commence à péter un plomb sur mon problème.

    Je dois faire un script perl qui se connecte en SSH à un switch cisco pour récupérer les configurations (running, startup et vlan.dat).

    D'abord, je tente de faire la connexion et juste passer une commande.
    Je me penche sur le problème et je trouve le module Net::SSH:erl, que j'arrive à installer après moults péripéties...
    Avec ce module, j'arrive à me connecter au switch en SSH sans problème, mais impossible de passer des commandes, il me met comme erreur : "NetInfTel01: Channel open failure: 1: reason 4:"

    J'essaye donc avec le module Net::SSH::W32Perl, même erreur.
    Après des recherches je trouve que c'est parce que Cisco n'accepte qu'un channel que ça ne marche pas... Soites...

    Je vais donc vers le module Net::SSH2, qui ne me fait aucune erreur, mais qui ne me retourne rien non plus si je fais juste un "show version" par exemple... Je ne sais peut-être pas m'y prendre pour faire apparaître le résultat, c'est possible aussi...
    Donc je ne sais pas si ce module marche, je pense qu'il arrive à se connecter au switch mais après... mystère.

    Passe ton tour donc, je me met sur le module Net::SSH::Expect, et là impossible de le lancer car il me manque un fichier IO::Tty::Constant.



    Ma demande est donc : quelqu'un sait-il par quel moyen se connecter à un switch Cisco en SSH, lui passer une commande et avoir son retour?
    Si éventuellement quelqu'un sait, est-il possible d'avoir juste quelques lignes de code avec connexion, passage et récupération de commande ?

    Je vous ai épargné tous les codes sources car c'était vraiment les codes sources béta qui correspondent à chaque module, et de plus ils sont sur un autre ordinateur qui n'a aucun lien avec celui là... galère donc !


    Merci beaucoup beaucoup beaucoup d'avance à celui qui pourra me répondre, ou même essayer de m'aider ne serait-ce qu'un tout petit peu !

    Thomas

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Points : 712
    Points
    712
    Par défaut
    Je me connecte à un pix avec ça. Je fait un sh conn. Tu peux essayer, cela dit, le pix utilise du ssh 1, et peut-etre dans ton cas faudra t'il forcer le protocole.

    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
     
    use Net::SSH::Perl;
     
    $mypass_ena="toto";
     
    my $cmd="
    ena
    $mypass_ena
    conf t
    pager  0
    sh conn
    ";
     
    my $host="192.168.56.30";
    my $user="pix";
    my $pass="bidule";
     
     
     
    my $ssh = Net::SSH::Perl->new($host,debug=>true,
    			      options => ["BatchMode yes", "RhostsAuthentication no" ]);
    $ssh->login($user,$pass);
     
     
    my ($stdout, $stderr, $exit) = $ssh->cmd("",$cmd);
     
    print "stdout:$stdout \n";
    print "stderr: $stderr \n";
    print "$exit\n";

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta réponse !

    Malheureusement, j'avais déjà testé le même code, et le problème ne vient pas du code en lui même qui est bon, mais du fait que je bosse sur un Catalyst, qui apparemment ne peut ouvrir qu'un "channel" SSH.
    Du coup il me connecte, il me passe une commande mais ne me retourne aucun résultat et reste bloqué.

    Voici le log qu'il m'affiche avec le debug :

    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
     
    NetInfTel01: Reading configuration data C:\Documents and Settings\blablablabla/.ssh/config
    NetInfTel01: Reading configuration data /etc/ssh_config
    NetInfTel01: Connecting to 192.168.10.2, port 22.
    NetInfTel01: Remote version string: SSH-1.99-Cisco-1.25
     
    NetInfTel01: Remote protocol version 1.99, remote software version Cisco-1.25
    NetInfTel01: Net::SSH::Perl Version 1.30, protocol version 1.5.
    NetInfTel01: No compat match: Cisco-1.25.
    NetInfTel01: Waiting for server public key
    NetInfTel01: Received server public key (640 bits) and host key (768 bits).
    NetInfTel01: Host '192.168.10.2' is known and matches the host key.
    NetInfTel01: Encryption type: DES3
    NetInfTel01: Send encrypted session key.
    NetInfTel01: Received encryption confirmation.
    NetInfTel01: Trying password authentification.
    NetInfTel01: Sending command:
    NetInfTel01: Entering interactive session.
    Et après le "Entering interactive session", plus rien... ça bloque, je ne récupère plus la main à moins de faire un Ctrl+C.

    Tous les morceaux de code que j'ai essayé sont bons, mais c'est le type de matériel et sa spécificité à n'accepter qu'un seul "channel" SSH qui fait tout bloquer...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Points : 712
    Points
    712
    Par défaut
    Il y a surement un problème, mais je ne suis pas sur qu'il s'agisse d'un problème de channel. Le channel n'est utilisé que dans la version 2 du protocole ssh. D'ailleurs, une des méthode que tu peux utiliser est de fixer la version du protocole.
    C'est à mon avis la première chose à tester.

    La deuxieme, c'est de savoir quelle est la version de Net::SSH:erl installée. Dans la version 1.31, un bug assez semblable a été introduit par le nouveau mainteneur. Il a corrigé ça dans la 1.33 (encore en unauthorized release).


    http://search.cpan.org/~turnstep/Net...et/SSH/Perl.pm

    Si tu es en 1.30 en revanche, ce n'est probablement pas ça.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    J'ai récupéré un script sur le Net, et en le modifiant à ma sauce selon mes besoins j'ai réussi à faire marcher la chose pour du SSH1 sur un Catalyst Cisco. Mais la méthode m'a l'air tordue quand même !

    Le script : http://www.cpan.org/authors/id/R/RG/...CCS_sub_SSH.pl

    Par contre vraiment impossible à faire marcher quelque chose en SSH2, le problème c'est que je ne peux pas forcer tous mes équipements du parc en SSH1, et certains sont forcés en SSH2...

    Pour la version de Net-SSH-Perl, j'ai effectivement la 1.31, je vais tenter d'installer la version 1.33, mais crois-tu que ça résoudra le problème en SSH2?

    Merci beaucoup pour ton aide en tout cas!

    Thomas

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Points : 712
    Points
    712
    Par défaut
    Oui, dans le script, il force le protocole en version 1. C'est ce qui fait que ça marche, je pense. Sur les pix, ce qui m'avait le plus surpris, c'est que je n'arrivait pas à faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ssh->cmd("ma commande");
    je devais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ssh->cmd("","ma commande");
    Ce qui est bizarre...

    Pour la version 2, oui, je pense qu'il faut que tu passes en version 1.33. D'après ce que j'ai pu lire, les patches réglaient le problème...

    A+

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Moi c'est l'inverse, avec $ssh->cmd("","ma commande"), il bloque tout de suite sur "Entering interactive session".

    Par contre quand je fais $ssh->cmd("ma commande"), il me fait une commande puis bloque sur le "Entering interactive session" à la 2eme commande...


    J'ai installé la version 1.33 et aucun changement au niveau du SSH2.
    Il se connecte bien comme avant, par contre au passage d'une commande via $ssh->cmd("ma commande"), il m'indique toujours :
    "NetInfTel01: Channel open failure: 1: reason 4:"

    Pareil si je transforme le script que j'ai indiqué dans mon post précédent en le passant en protocole 2 (et en modifiant tout ce qui est nécessaire au niveau du register_handler comme indiqué dans le cpan de Net::SSH:erl). Il se connecte toujours bien mais ne passe aucune commande au switch...

Discussions similaires

  1. connexion perl et ssh
    Par rapdoc dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 05/06/2014, 11h24
  2. [PowerShell] connexion à un switch cisco via powershell
    Par phinestra dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 08/10/2012, 11h18
  3. Problème connexion en ssh sur Switch CISCO
    Par Maykin dans le forum Modules
    Réponses: 2
    Dernier message: 18/04/2011, 12h00
  4. Browser ssh switch cisco 2950
    Par Yvan76 dans le forum Hardware
    Réponses: 15
    Dernier message: 12/08/2009, 11h11
  5. Administration switch cisco
    Par zorian dans le forum Développement
    Réponses: 9
    Dernier message: 24/02/2004, 20h28

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