Script perl pour se connecter à un hôte distant

tdloic Messages postés 18 Statut Membre -  
blux Messages postés 27887 Date d'inscription   Statut Modérateur Dernière intervention   -
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 6373 Statut Contributeur 1 106
 
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 18 Statut Membre 68
 
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 27887 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
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 18 Statut Membre 68
 
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 27887 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
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 6373 Statut Contributeur 1 106
 
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 18 Statut Membre 68
 
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 27887 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
As-tu essayé avec l'agent SNMP standard windows ?

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