Segfault > IT > Lookups > SNMP notes
First published on: 06.Aug.2013

Last change: 06.Aug.2013

Just some short notes and explanations about the SNMP utilities in Linux - just so that I don't have to search for them again when I forget what I have just learned.


  • the SNMP daemon is configured in /etc/snmpd/snmp.conf. Example:
    #===============
    com2sec local     192.168.0.0/16        mySecRETpassWORD
    com2sec local     127.0.0.1             mySecRETpassWORD
    #com2sec local     10.255.255.0/24       my-own-SNMP-community
    #
    group MyROGroup v1         local
    group MyROGroup v2c        local
    group MyROGroup usm        local
    view all    included  .1                               80
    access MyROGroup "" any     noauth    exact  all    none   none
    #
    syslocation Moon
    syscontact Admin {rock@moon.com}
    #===============
    Using this configuration file, all clients connecting from hosts having the IP addresses 192.168.* and 127.0.0.1 and presenting the password "mySecRETpassWORD" will be able to get values out of SNMP (no clue about setting them).
  • The SNMP-logfile in Gentoo is "/var/log/net-snmpd.log".
  • Generate the full list of all MIBs/OIDs and their details:
    snmpwalk -v2c -c mySecRETpassWORD localhost:161 .1
  • Generate the same list of all MIBs and their details, displaying the resulting OIDs in numerical form instead of text:
    snmpwalk -v2c -c mySecRETpassWORD -On localhost:161 .1
  • If you don't get back anything check that 1) the community/password is correct and 2) that the IP number you are using matches the one you have configured in /etc/snmpd/snmpd.conf.
  • The command...
    snmpwalk -v2c -c mySecRETpassWORD localhost:161 .1.3.6.1.4.1.2021.13.15.1.1.2
    ...and...
    snmpwalk -v2c -c mySecRETpassWORD localhost:161 UCD-DISKIO-MIB::diskIODevice
    ...are equivalent.
  • The definition of what you can get is in "/usr/share/snmp/mibs".
  • If e.g. in /usr/share/snmp/mibs/UCD-DISKIO-MIB.txt you see that "diskIONWrittenX" has "diskIOEntry 13" you'll know that you'll be interested in the entry number 13.
    Therefore, issuing...
    snmpwalk -v2c -c mypwd localhost:161 .1.3.6.1.4.1.2021.13.15.1.1.13
    ...or...
    snmpwalk -v2c -c mypwd localhost:161 UCD-DISKIO-MIB::diskIONWrittenX
    ...or...
    snmpwalk -v2c -c mypwd localhost:161 .1.3.6.1.4.1.2021.13.15.1.1.diskIONWrittenX
    ...generates the same result.
  • Running the command...
    snmpwalk -v2c -c mySecRETpassWORD localhost:161 UCD-DISKIO-MIB::diskIODevice
    ...will show e.g. the line...
    UCD-DISKIO-MIB::diskIODevice.9 = STRING: sda
    ...and by seeing that you'll know that when you run...
    snmpwalk -v2c -c mySecRETpassWORD localhost:161 UCD-DISKIO-MIB::diskIONWrittenX
    ...you'kll have to focus on...
    UCD-DISKIO-MIB::diskIONWrittenX.9 = Counter64: 2136883200
    ...for the 64bit integer value concerning the disk "sda".

    If you want to  get only the value of that single disk then issue:
    snmpwalk -v2c -c mySecRETpassWORD localhost:161 UCD-DISKIO-MIB::diskIONWrittenX.9
    ...or...
    snmpget -v2c -c mySecRETpassWORD localhost:161 UCD-DISKIO-MIB::diskIONWrittenX.9
  • In the end, run this to get the list of all devices...
    snmpwalk -v2c -c mySecRETpassWORD localhost:161 UCD-DISKIO-MIB::diskIODevice
    ...getting back e.g. ...
    UCD-DISKIO-MIB::diskIODevice.8 = STRING: loop7
    UCD-DISKIO-MIB::diskIODevice.9 = STRING: sda
    UCD-DISKIO-MIB::diskIODevice.10 = STRING: sda1
    ...then grep for the device you're interested in like...
    snmpwalk -v2c -c mySecRETpassWORD localhost:161 UCD-DISKIO-MIB::diskIODevice | grep sda
    ...then check that the string you found matches exactly what you were looking for (e.g. ignore "sda1" if you were looking for "sda") and finally replace for that line the "diskIODevice" with "diskIONWrittenX" to get the specific value of (in this case) a 64bit int showing the bytes written to that device since the last boot:
    snmpwalk -v2c -c mySecRETpassWORD localhost:161 UCD-DISKIO-MIB::diskIONWrittenX.9 | awk '{print $4}'