How to install and use snmpwalk

How to install and use snmpwalk

Snmpwalk is a great tool for Linux boxes. You can easily list all OIDs a SNMP host has to offer then filter the results to your needs and find OIDs to import into tools like Cacti. Snmpwalk is in most linux repos so its easy to install e.g:

Fedora/Centos: yum install net-snmp-utils
Ubuntu: apt-get install snmp

The syntax to use snmpwalk is also pretty simple:

m00nie@linuxBox:~$snmpwalk --help


-h, --help            display this help message
-H                    display configuration file directives understood
-v 1|2c|3             specifies SNMP version to use
-V, --version         display package version number SNMP Version 1 or 2c specific
-c COMMUNITY          set the community string SNMP Version 3 specific
-a PROTOCOL           set authentication protocol (MD5|SHA)
-A PASSPHRASE         set authentication protocol pass phrase
-e ENGINE-ID          set security engine ID (e.g. 800000020109840301)
-E ENGINE-ID          set context engine ID (e.g. 800000020109840301)
-l LEVEL              set security level (noAuthNoPriv|authNoPriv|authPriv)
-n CONTEXT            set context name (e.g. bridge1)
-u USER-NAME          set security name (e.g. bert)
-x PROTOCOL           set privacy protocol (DES|AES)
-X PASSPHRASE         set privacy protocol pass phrase
-Z BOOTS,TIME         set destination engine boots/time General communication options
-r RETRIES            set the number of retries
-t TIMEOUT            set the request timeout (in seconds)
-d                    dump input/output packets in hexadecimal
-D TOKEN[,...]        turn on debugging output for the specified TOKENs (ALL gives extremely verbose debugging output)

A copy of the man page can be found here.
So a simple example of listing all OIDs on a host with an IP of using snmp version two and a community string of mysecretsnmp would be:

m00nie@linuxBox:~$ snmpwalk -v 2c -c mysecretsnmp
SNMPv2-MIB::sysDescr.0 = STRING: Linux 2.4.31 #2 SMP Fri Aug 22 23:02:05 PDT 2008 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (22119) 0:03:41.19
SNMPv2-MIB::sysContact.0 = STRING: m00nie Networks
SNMPv2-MIB::sysName.0 = STRING:
SNMPv2-MIB::sysLocation.0 = STRING: m00nieland
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
NOTIFICATION-LOG-MIB::nlmLogTime."default".1 = Timeticks: (12) 0:00:00.12
NOTIFICATION-LOG-MIB::nlmLogDateAndTime."default".1 = STRING: 2010-8-23,13:50:31.0,+1:0

Now to only view one OID value we can append the OID SNMPv2-MIB::sysContact.0

m00nie@linuxBox:~$ snmpwalk -v 2c -c mysecretsnmp SNMPv2-MIB::sysContact.0
SNMPv2-MIB::sysContact.0 = STRING: m00nie Networks

To display the numerical OID for each snmp value use the "-O n" switch. Useful for Cacti as it only uses the numerical OID ;)

m00nie@linuxBox:~$ snmpwalk -v 2c -O n -c mysecretsnmp SNMPv2-MIB::sysContact.0
. = STRING: m00nie Networks

You can also use the numerical OID to refine the output.

m00nie@linuxBox:~$ snmpwalk -v 2c -O n -c mysecretsnmp .
. = STRING: m00nie Networks

Now if your linux box is also running Cacti or similar you have proven SNMP connectivity so importing like this is easy, allowing the graphing of the value.

m00nie :)