====== SNMP ======
----
===== Installation =====
==== Installation packages ====
sudo apt-get install snmp snmpd snmp-mibs-downloader
==== Configuration ====
=== Etendre SNMP ===
Editer le fichier /etc/default/snmpd pour ajouter « extend » après le -I après avoir enlevé le commentaire en début de ligne.
# snmpd options (use syslog, close stdin/out/err).
SNMPDOPTS=’-Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I extend -smux,mteTrigger,mteTriggerConf -p /run/snmpd.pid’
=== Droits ===
Editer le fichier /etc/snmp/snmpd.conf pour donner les autorisation. On peut autoriser un range d'adresse IP, une seule adresse IP ou juste la boucle locale.
Exemple pour donner accès à une communauté public en lecture seule depuis la boucle locale et depuis un réseau particulier :
rocommunity public 127.0.0.1
rocommunity public 10.0.0.0/8
Attention à la ligne **agentaddress** qui peut restreindre l'écoute à l'interface locale. Modifier en :
agentAddress udp:161
=== Redémarrage du service ===
sudo systemctl restart snmpd
=== Vérification ===
On vérifiera que le service est à l'écoute sur les interfaces souhaitées :
netstat -ulnp
ss -ulnp
----
[[all:bibles:linux:reseau:snmp|Haut de page]]
===== Etendre SNMP avec ses scripts =====
==== Scripts ====
Le ou les scripts doivent être accessible et exécutable par l'utilisateur root.
==== Configuration ====
=== Fichier de configuration ===
Editer le fichier /etc/snmp/snmpd.conf pour ajouter les scripts désirés :
extend script1 /etc/snmp/scripts/script1.sh
extend script2 /etc/snmp/scripts/script2.sh
=== Redémarrage service ===
sudo systemctl restart snmpd
=== Vérification ===
snmpget -v2c -c public localhost 'NET-SNMP-EXTEND-MIB::nsExtendOutLine."script1".1'
snmpget -v2c -c public localhost 'NET-SNMP-EXTEND-MIB::nsExtendOutLine."script2".1'
==== Interrogations ====
=== Commandes ===
* snmpget : permet de récupérer la valeur d’un OID feuille.
* snmpwalk : permet de récupérer toutes les valeurs d’un OID « noeud ».
* snmptable : par rapport à snmpwalk, présentation sous forme de tableau.
snmpwalk -v2c -c public 127.0.0.1 NET-SNMP-EXTEND-MIB::nsExtendxxxxxx
Récupérer la ligne NET-SNMP- .... et faire la commande snmpget correspondante avec le NET-SNMP... entre '' :
snmpget -v2c -c public localhost 'NET-SNMP-EXTEND-MIB::.....'
=== Paramètre ===
avec nsExtendxxxxxx :
| nsExtendCommand | The full path of the command binary (or script) to run |
| nsExtendArgs | Any command-line arguments for the command |
| nsExtendExecType | The mechanism used to invoke the command (1-exec, 2-shell) |
| nsExtendOutput1Table | A table of scripted extensions - configuration and (basic) output |
| nsExtendOutputFull | The full output from the command, as a single string |
| nsExtendOutNumLines | The number of lines of output (and hence the number of rows in nsExtendOutputTable relating to this particular entry) |
=== Exemple ===
snmpget -v2c -c public localhost 'NET-SNMP-EXTEND-MIB::nsExtendOutputFull."script"'
=== Source ===
[[https://cric.grenoble.cnrs.fr/Administrateurs/Outils/MIBS/?module=NET-SNMP-EXTEND-MIB&fournisseur=netsnmp|Source]]
==== Interroger par OID ====
Cela fonctionne en local mais pas en distant car il n'y a pas de MIB pour ces scripts. Il est donc intéressant de récupérer un OID pour une utilisation distante.
=== Récupération OID ===
snmptranslate -On 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."script1".1'
.1.3.6.1.4.1.8072.1.3.2.3.1.1.18.98.109.101.50.56.48.95.116.101.109.112.101.114.97.116.117.114.101.1
snmptranslate -On 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."script2".1'
.1.3.6.1.4.1.8072.1.3.2.3.1.1.15.98.109.101.50.56.48.95.112.114.101.115.115.105.111.110.1
=== Utilisation OID ===
Il suffit de retirer le premier .1 et d'ajouter iso.
snmpget -v2c -c public localhost iso.3.6.1.4.1.8072.1.3.2.3.1.1.18.98.109.101.50.56.48.95.116.101.109.112.101.114.97.116.117.114.101.1
snmpget -v2c -c public localhost iso.3.6.1.4.1.8072.1.3.2.3.1.1.15.98.109.101.50.56.48.95.112.114.101.115.115.105.111.110.1
Il semblerait qu'en distant il faille retirer le premier .1 et en distant le premier et le dernier.
----
[[all:bibles:linux:reseau:snmp|Haut de page]]
===== Linux OID =====
==== Mémoire ====
=== OID ===
| Taille totale du swap | .1.3.6.1.4.1.2021.4.3.0 |
| Espace swap disponible | .1.3.6.1.4.1.2021.4.4.0 |
| RAM totale dans la machine | .1.3.6.1.4.1.2021.4.5.0 |
| RAM totale utilisée | .1.3.6.1.4.1.2021.4.6.0 |
| RAM totale libre | .1.3.6.1.4.1.2021.4.11.0 |
| RAM totale partagée | .1.3.6.1.4.1.2021.4.13.0 |
| RAM total mis en cache | .1.3.6.1.4.1.2021.4.14.0 |
| Total mémoire mis en cache | .1.3.6.1.4.1.2021.4.15.0 |
=== Interrogation ===
snmpget -v 2c -c public localhost .1.3.6.1.4.1.2021.4.6.0
==== Disque ====
=== Configuration ===
Ajouter dans le fichier /etc/snmp/snmpd.conf
disk / 10%
disk /boot 10%
On ajoute les points de montage et le seuil d'espace libre que l'on souhaite (en % ou en taille).
=== Interrogation ===
snmptable -v 2c -c public localhost 1.3.6.1.4.1.2021.9
| Chemin où le disque est monté | .1.3.6.1.4.1.2021.9.1.2.1 |
| Chemin de l'appareil pour la partition | .1.3.6.1.4.1.2021.9.1.3.1 |
| Taille totale du disque / partition (ko) (kBytes) | .1.3.6.1.4.1.2021.9.1.6.1 |
| Espace disponible sur le disque k | .1.3.6.1.4.1.2021.9.1.7.1 |
| Espace de réutilisation sur le disque | .1.3.6.1.4.1.2021.9.1.8.1 |
| Pourcentage de l'espace utilisé sur le disque | .1.3.6.1.4.1.2021.9.1.9.1 |
| Pourcentage des inodes utilises sur le disque | .1.3.6.1.4.1.2021.9.1.10.1 |
| Système Uptime | .1.3.6.1.2.1.1.3.0 |
==== Divers ====
| System Name | .1.3.6.1.2.1.1.5.0 |
| System Description | .1.3.6.1.2.1.1.1.0 |
==== Source ====
[[http://debianhelp.co.uk/linuxoids.htm]]
----
[[all:bibles:linux:reseau:snmp|Haut de page]]
===== Sources =====
* [[https://geekpeek.net/extend-snmp-run-bash-scripts-via-snmp/]]
* [[http://net-snmp.sourceforge.net/wiki/index.php/Tut:Extending_snmpd_using_shell_scripts]]
* [[https://blog.cedrictemple.net/239-faire-des-requetes-snmp-en-ligne-de-commande-sous-linux/]]
----
[[all:bibles:linux:reseau:snmp|Haut de page]]