Script perl pour se connecter à un hôte distant

Fermé
tdloic Messages postés 16 Date d'inscription mardi 25 mars 2014 Statut Membre Dernière intervention 8 janvier 2015 - Modifié par blux le 1/04/2014 à 16:40
blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 - 2 avril 2014 à 10:54
Bonjour,
J'ai écris un script Perl pour faire des requêtes SNMP. le problème est que je n'arrive pas à me connecter sur des équipements ayant un login et un mot de passe. J'ai besoin d'aide SVP.
merci d'avance.
PS: voici le code
use strict;
use warnings;
use Net::SNMP;

my $OID_sysDescr = '.1.3.6.1.2.1.1.1.0'; #Utilisation pour la description du matériel.
my $host = '192.168.240.67';
   
 #Permet de lancer une connexion sur l'équipement.
 my ($session, $error) = Net::SNMP->session(
         -hostname       => $host,
   -port           => "161",
         -version        => "2",
         -community      => "public",
         -nonblocking    => 1,
      );

      #Permet de signaler si une erreur a lieu lors de la connexion.
      if (!defined $session) {
         print "ERREUR: Impossible d'établir la connexion avec ", $host, $error;
      }

      #Requète SNMP.
      my $result = $session->get_request(
         -varbindlist => [ $OID_sysDescr ],
         -callback    => [ \&get_callback, $host ],
      );

      #Permet de signaler si une erreur a lieu lors de la requête.
      if (!defined $result) {
         print "ERREUR: Impossible d'effectuer la requete SNMP \n", $session->hostname(), $session->error();
      }

   # Permet d'afficher le message SNMP en clair.

   snmp_dispatcher();
   $session->close();
  
   sub get_callback
   {
      my ($session, $location) = @_;

      my $result = $session->var_bind_list();

      if (!defined $result) {
         print "ERREUR: Impossible d'effectuer la requete SNMP (get) \n",
                $session->hostname(), $session->error();
         return;
      }

      print $result->{$OID_sysDescr};

      if (!defined $result) {
         print "ERREUR: Impossible d'effectué la requête SNMP (set): %s.\n",
                $session->hostname(), $session->error();
      }

      return;
   }

   sub set_callback
   {
      my ($session) = @_;

      my $result = $session->var_bind_list();

      return;
   }
   
   <>;



A voir également:

2 réponses

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
1 avril 2014 à 16:13
Salut,

je n'utilise pas Net::SNMP, mais sa documentation sur CPAN indique que le constructeur supporte les arguments suivants gérant l'authentification :

session() - create a new Net::SNMP object

   ($session, $error) = Net::SNMP->session(
(...)
                           [-username      => $username,]    # v3
                           [-authkey       => $authkey,]     # v3
                           [-authpassword  => $authpasswd,]  # v3
                           [-authprotocol  => $authproto,]   # v3
                           [-privkey       => $privkey,]     # v3
                           [-privpassword  => $privpasswd,]  # v3
                           [-privprotocol  => $privproto,]   # v3
                        );


qui sont absents de ton script.


Dal
0
tdloic Messages postés 16 Date d'inscription mardi 25 mars 2014 Statut Membre Dernière intervention 8 janvier 2015 68
1 avril 2014 à 16:37
merci Dal. J'ai déjà lu cette documentation sur CPAN. Mais cela ne résoud pas mon problème, je parle plutôt de login et de mot de passe des équipements. Et en plus j'utilise SNMPv2c, or les paramètres que tu as cité ne sont valide que sous SNMPv3
0
blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
1 avril 2014 à 16:40
Salut,

tu prends un user SNMP ou un user de connexion 'standard' ?

Quel message d'erreur as-tu ? Ou quel comportement observes-tu ?
0
tdloic Messages postés 16 Date d'inscription mardi 25 mars 2014 Statut Membre Dernière intervention 8 janvier 2015 68
1 avril 2014 à 16:59
Pour la première question je ne sais quoi répondre. en ce qui concerne l'erreur, j'obtiens:
No response from remote host "169.168.240.67"
0
blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
Modifié par blux le 1/04/2014 à 17:10
J'avais pas vu que tu prenais la communauté publique.
Est-ce que snmp est 'activé' sur ton matériel ?
Est-ce qu'avec un outil 'du marché', comme celui-ci, tu arrives à récupérer des infos de ton équipement ?
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 1/04/2014 à 17:24
tdloic,

Il semble que SNMPv2c utilise la méthode d'authentification de la v1, à savoir l'utilisation de la chaîne "community" en clair. Après, je suppose qu'il faut que ton équipement soit paramétré avec la même chaîne "community", et que les droits définis n'interdisent pas ton adresse IP, ou l'autorisent, etc.

Blux a l'air plus calé que moi sur SNMP, je t'invite chaudement à répondre à ses questions.


Dal
0
tdloic Messages postés 16 Date d'inscription mardi 25 mars 2014 Statut Membre Dernière intervention 8 janvier 2015 68
1 avril 2014 à 17:34
j'ai installé l'agent SNMPsuivant sur les PC: NuDesign_EAgentService006_v9.0.0.10.exe https://www.loriotpro.com/Products/NudesignSNMPAgentDoc/Windows-SNMP_Agent_Nudesign.htm
quand je fais les tests, mon code ne marche que sur les PC n'ayant pas de mot de passe. Pour ceux ayant les mots de passe, je recois l'erreur: No response from remote host "169.168.240.67"
0
blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
1 avril 2014 à 22:00
As-tu essayé avec l'agent SNMP standard windows ?

Quand tu parles de mot de passe, c'est celui du compte windows ?
0