Script perl pour se connecter à un hôte distant
tdloic
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
blux Messages postés 5032 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 5032 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
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;
}
<>;
2 réponses
-
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 -
Salut,
tu prends un user SNMP ou un user de connexion 'standard' ?
Quel message d'erreur as-tu ? Ou quel comportement observes-tu ?
-
-
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 ? -
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 -
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" -
As-tu essayé avec l'agent SNMP standard windows ?
Quand tu parles de mot de passe, c'est celui du compte windows ?
-