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

Applications Discussion :

Question au sujet de Net-SNMP


Sujet :

Applications

  1. #1
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut Question au sujet de Net-SNMP
    Bonjour,

    Merci pour cet article Introduction à Net-SNMP et SNMP version 1, je suis tombé dessus un peu tard, mais en tout cas ça m'a permis de comprendre pas mal de choses sur net-snmp.

    Par contre j'aurai quelques questions:
    Le snmpd.conf qui est pris en compte est celui dans /etc/snmp alors que tout les tutoriels sur le site officiel de net-snmp parlent de /usr/local/share/snmp/ ... et si j'édite le fichier dans ce répertoire, les changements ne sont évidement pas du tout pris en compte..
    J'ai donc du mal à savoir à quoi correspondent tout ces snmpd.conf

    Ensuite j'ai un deuxième soucis, c'est que j'essaie d'ajouter une MIB et son module (.c et .h associés) à l'agent principal..
    Dans un premier temps, j'utilise l'exemple détaillé de net-snmp section "Compiling in your new MIB module" ici:
    http://net-snmp.sourceforge.net/wiki...g_a_MIB_Module
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     Compiling in your new MIB module
    
    Note: you will need to have previously installed the Net-SNMP Source Package on your system before proceeding.
    
    There are a few ways to get your new MIB module loaded and accessible via SNMP requests. We'll discuss all three ways separately. To make this easy to test the procedures outlined below, we've provided three simple mib modules which implement the three simple scalars in the NET-SNMP-TUTORIAL-MIB MIB. To see how MIBs can be properly used by the tools, please see the mib-options tutorial.
    
        Compile it into the master agent.
    
    Lets assume you're going to compile in a new mib module. For our example, lets use the example mib module and it's header file. To do this, you would put the nstAgentModuleObject.h and nstAgentModuleObject.c files into the net-snmp source code directory. You do this by copying them into a agent/mibgroup/nstAgentModuleObject.h and agent/mibgroup/nstAgentModuleObject.c file.
    
    Next, you have to configure the package to find them and compile them into the agent. To do this, you run the configure script giving it the extra module names you want it to load:
    
     % ./configure --with-mib-modules="nstAgentModuleObject"
           
    
    If you had multiple modules to include (like a second "XXX" module, for example), you can separate them with spaces inside the quotes (e.g., --with-mib-modules="nstAgentModuleObject XXX").
    
    Note that nstAgentModuleObject is the prefix and the configure script will actually look for a nstAgentModuleObject.h and a nstAgentModuleObject.c file. You must have a .h file and you can not get it to work with just a .c file.
    
    Build your new agent with your new code in it by running make:
    
     % make
           
    
    Finally, install the whole lot by running make install:
    
     % make install
       
    
    Now that the agent is installed, you need to add some basic configuration (see other tutorials for more configuration options). Here we just add a simple read-only and read-write community strings (tutget and tutset, respectively) for the tutorial MIB branch:
    
     % echo "rocommunity tutget .1.3.6.1.4.1.8072.2.4" > /usr/local/etc/snmpd.conf
     % echo "rwcommunity tutset .1.3.6.1.4.1.8072.2.4" > /usr/local/etc/snmpd.conf
    
    You can test out the functionality by starting the snmpd agent:
    
     % /usr/local/sbin/snmpd -f -L -d -p 9999
    
    This runs the agent on a temporary port ( -p 9999) so that it doesn't need special priviledges, or interfere with your 'normal' agent. Incoming and outgoing packets are printed (-d), to show what's happening, and the agent is run as a 'non-daemon' command (-f -L) so that you can see these messages. Note that this ties up the current shell, so you'll need to run the following checks in a different terminal window.
    
    And then running snmpget and snmpset on the scalar object:
    
     % snmpget -v2c -c tutget localhost:9999 NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject.0
     NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject.0 = INTEGER: 1
     
     % snmpset -v2c -c tutset localhost:9999 NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject.0 = 5
     NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject.0 = INTEGER: 5
     
     % snmpget -v2c -c tutget localhost:9999 NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject.0
     NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject.0 = INTEGER: 5
       
    
    You can also compile your code into a "subagent" which then attaches itself to the master agent using the AgentX subagent protocol. Our libraries provide support to make this easy to do and this is discussed in greater detail in a later section.
    
    Finally, you can also compile your code into pluggable shared object and tell the snmpd agent to load it. This is also discussed in greater detail in a later section .
    Or malgré que j'ai bien ajouté la MIB dans snmpd.conf (les snmptranslate fonctionnent), que les Get sur des variables tels que sysLocation fonctionnent, les GET sur NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject me renvoient:
    No Such Object available on this agent at this OID

    j'ai tenté d'utiliser juste la communauté public et le port 161, et le problème reste le même..

    Exemple de GET qui marche et qui ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    snmpget -v2c -c public localhost NET-SNMP-AGENT-MIB::nsCacheEnabled.0
    NET-SNMP-AGENT-MIB::nsCacheEnabled.0 = INTEGER: false(2)
    
    snmpget -v2c -c public localhost NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject.0
    NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject.0 = No Such Object available on this agent at this OID
    et voilà ce que j'ai actuellement dans mon /etc/snmp/snmpd.conf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    export MIBDIRS=/usr/share/snmp/mibs
    mibs ALL
    et pour info:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ cd /usr/share/snmp/mibs 
    /usr/share/snmp/mibs$ ls | grep TUTORIAL
    NET-SNMP-TUTORIAL-MIB.txt
    et voilà le résumé que j'ai eu à la fin de ./configure --with-mib-modules="nstAgentModuleObject" en suivant le tutorial (on voit bien le nstAgentModuleObject):
    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
    ---------------------------------------------------------
                Net-SNMP configuration summary:
    ---------------------------------------------------------
    
      SNMP Versions Supported:    1 2c 3
      Building for:               linux
      Net-SNMP Version:           5.7.2
      Network transport support:  Callback Unix Alias TCP UDP IPv4Base SocketBase TCPBase UDPIPv4Base UDPBase
      SNMPv3 Security Modules:     usm
      Agent MIB code:             nstAgentModuleObject default_modules =>  snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host
      MYSQL Trap Logging:         unavailable
      Embedded Perl support:      enabled
      SNMP Perl modules:          building -- embeddable
      SNMP Python modules:        disabled
      Crypto support from:        crypto
      Authentication support:     MD5 SHA1
      Encryption support:         DES AES
      Local DNSSEC validation:    disabled
    
    ---------------------------------------------------------
    Je ne cherche pas à terme à faire un module compliqué mais en fait je suis en train de développer un manager SNMP avec Qt qui pilotera un agent SNMP sur système embarqué. Du coup pour pouvoir tester sans attendre que le système embarqué soit disponible (il est toujours en cours de fabrication), je voudrais me servir de cet exemple pour vérifier que mon manager est bien capable de faire des GET, SET et de recevoir des TRAP.. et là je suis en train de passer tout le temps que j'avais prévu au développent de ce manager sur la mise en place d'un simple agent..

    En espérant avoir une réponse, car la je fais chou blanc de partout..

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Déjà, commence par faire un snmpwalk sur ton équipement pour connaitre les OIDs gérés par ton agent. Ensuite, on verra. Peut être que la réponse "No Such Object available on this agent at this OID" est cohérente si ce n'est pas instancié sur l'agent.

  3. #3
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Bonjour,

    merci beaucoup pour la réponse et d'avoir déplacer le message dans une section du forum plus adaptée.

    Alors comme on peut s'y attendre, lorsque je fais un walk sur l'agent,
    NET-SNMP-TUTORIAL-MIB n'apparait pas et NET-SNMP-AGENT-MIB y est bien.
    Donc la réponse renvoyée actuellement suite à un GET est je suppose cohérente.
    Mais alors comment faire pour l'instancier sur l'agent?

    Edit: je complète un peu ma réponse avec un walk sur mon agent et un grep pour illustrer ce que j'ai écrit plus haut:

    les deux lignes suivante ne renvoient rien:
    $ snmpwalk -v2c -c public localhost .1.3.6.1.4.1.8072 | grep NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject
    $ snmpwalk -v2c -c public localhost .1.3.6.1.4.1.8072 | grep NET-SNMP-TUTORIAL-MIB
    $

    Alors que celle-ci oui:
    $ snmpwalk -v2c -c public localhost .1.3.6.1.4.1.8072 | grep NET-SNMP-AGENT-MIB::nsCacheEnabled
    NET-SNMP-AGENT-MIB::nsCacheEnabled.0 = INTEGER: false(2)

  4. #4
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    J'ai tout recompilé en faisant un make clean, j'ai bien eu encore une fois le module exemple du tutoriel marqué dans le "configure summary". mais j'ai exactement le même comportement...
    est ce que même si on a spécifié le module au moment du ./configure et que le reste s'est bien passé, il faut faire autre chose pour l'instancier? comment vérifier avec certitude que le module compilé est bien là où il faut?

    J'ai tenté une réinstallation également de snmpd et netsnmp depuis synaptic.. mais pareil..

  5. #5
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Je reviens sur le sujet au sujet des variables d'environnement décrites ici:
    http://ram-0000.developpez.com/tutor...t-SNMP-1/#L4-6

    Si je pose comme définitions :
    Manager: celui qui exécute les commandes GET, GET-NEXT, SET, WALK et qui reçoit les GET-RESPONSE et le TRAP.
    Agent: celui qui répond aux GET, SET, etc par des GET-RESPONSE et envoie des TRAP.

    En gros le MANAGER a besoin des MIBS pour faire le "translate" de l'OID par exemple mais n'a pas besoin des Modules (.c et .h) instanciés sur l'agent qui définissent le comportement de l'agent.
    En effet, l'agent lui "possède" donc des Modules (compilés donc à partir de .c et .h) qui sont relatifs(correspondent) aux différentes MIBs correspondantes accessibles par le manager.


    Par exemple, le manager demande le sysLocation (décrit dans une MIB) à l'agent; et l'agent lui a un module instancié correspondant à cette MIB qui lui permet de savoir que si il reçoit un GET sur cet OID, il doit renvoyer le paramètre correspondant paramétré dans snmpd.conf.

    Donc, si je parle de la variable d'environnement MIBS, celle-ci correspond t'elle aux fichiers *-MIB.txt qui servent au "manager" à faire les correspondance entre OID et noms de variables dans le cas des translate par exemple, ou alors correspond elle aux modules qui doivent être instanciés par l'agent?

    (j'espère être clair..^^)

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Je remonte le sujet, en effet je suis à mon tour en train de faire le tutoriel suivant : http://www.net-snmp.org/wiki/index.p...MIB_Module_API, j'ai passé avec succès les étapes d'installation de l'agent cependant je ne comprend pas bien l'utilité de ces 2 commandes (du coup j'ai enlevé les lignes que celà ajoutait à mon fichier snmpd.conf) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    % echo "rocommunity tutget .1.3.6.1.4.1.8072.2.4" > /usr/local/etc/snmpd.conf
     % echo "rwcommunity tutset .1.3.6.1.4.1.8072.2.4" > /usr/local/etc/snmpd.conf
    et plus embêtant lorsque je lance mon agent snmp je recois ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    theo@theo-Celsius-W420:~$ /usr/local/sbin/snmpd -f -L -d -p 9999
    Turning on AgentX master support.
    Error opening specified endpoint "udp:127.0.0.1:161"
    Server Exiting with code 1
    Quelqu'un aurait il une idée de comment résoudre ce problème?

Discussions similaires

  1. [Débat] Expériences au sujet de .NET
    Par DevX dans le forum Débats sur le développement - Le Best Of
    Réponses: 46
    Dernier message: 25/05/2014, 12h16
  2. net-snmp et c++ . that si a question ??
    Par ange1708 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 09/06/2008, 12h55
  3. [ASP.NET VB.NET]Petite question au sujet du datagrid
    Par Azephel dans le forum ASP.NET
    Réponses: 11
    Dernier message: 06/03/2007, 18h38
  4. Petite question au sujet du code Hamming
    Par sylsau dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 28/02/2006, 13h30
  5. Questions au sujet d'une démission
    Par root76 dans le forum Démission
    Réponses: 18
    Dernier message: 22/02/2006, 13h39

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