This is a SNMP (Simple Network Management Protocol) module.

Note: this module internally uses 64 bit row numbers and therefore requires Tcl/Tk 8.4 or above (which is already the case if you are reading this from a running moodss application).

It requires the MIB Smithy SDK library from Muonics (commercial software) to be installed on the computer. A usable demonstration library can be downloaded for testing this module from
The MIB Smithy SDK is a dynamic Tcl/Tk extension for developing SNMP management scripts and custom MIB compiler/conversion tools. It directly supports all features of both the SMIv1 and SMIv2 MIB modules language, as well as XML modules generated by MIB Smithy Pro/Standard editions, and provides APIs for complete read-write access to all aspects of MIB module definitions. The SDK also provides SNMP management APIs supporting SNMPv1, SNMPv2c and SNMPv3 with both HMAC-SHA-96 and HMAC-MD5-96 authentication and CBC-DES privacy.

Data is initially displayed in one or several tables, with one column per object identifier (see the -i (--identifiers) option).

This module can either display a SNMP table or a set of discrete objects.

If the -t (--table) option is used, then the corresponding SNMP table data is displayed in a table. The -i (--identifiers) option can be used to constrain the display to a subset of the table columns, and eventually split the data into several views.
If the SNMP table index consists of a single object, then the corresponding column will be used as the index of the displayed table(s), else a specific column containing a row creation unique number is generated. In either case, the index column is inserted, or placed if already specified in the identifiers list (see -i (--identifiers) option), at the leftmost position in each of the displayed tables.

If the -t (--table) option is not used, then the -i (--identifiers) option specifies a list of identifiers which can contain groups but no table. When a group is part of the list of objects, it is expanded into a list of its immediate successor identifiers. In this case, only the accessible identifiers are displayed. Data can be split in different views. All displayed data tables use a swapped layout, with 2 columns: identifiers on the left side and their values on the right side.

Data is displayed as returned by the SNMP peer after formatting by the MIB Smithy SDK library, except for the objects of the counter type, which are displayed as per second values, calculated by dividing the difference between 2 poll values by the actual time difference between the two last polls. The SNMP agent system uptime value is used for most precise calculations.

Of course, you can, as with any other moodss module, specify several instances of this module in the command line to monitor as many SNMP peers as desired.

This document includes extracts from the MIB Smithy SDK documentation with the permission from Muonics (MIB Smithy SDK is a trademark of Muonics ; Copyright © 2003 Muonics ; All Rights Reserved).

Error handling:

When there is a communication error with the remote host, all rows disappear and the displayed table becomes empty. A descriptive error message is also generated in such a case.

Module options:


$ moodss smithy -t ipAddrTable
$ moodss smithy -a --mibs rfc1213.mib -t ifTable
$ moodss smithy --trim if -a -t ifTable -i ifDescr,ifType,ifMtu,ifSpeed,ifOperStatus,,ifInOctets,ifInErrors,ifOutOctets,ifOutErrors
creates the following 2 tables:
example view of 2 tables with MIBII interfaces data
$ moodss smithy --directory /usr/lib/smithysdk/samples --trim frCircuit -a --mibs rfc1212.mib,/home/jdoe/mibs/rfc1315.mib -t frCircuitTable -i frCircuitDlci,frCircuitThroughput,frCircuitState,frCircuitReceivedOctets,frCircuitSentOctets
$ moodss smithy --directory /usr/lib/smithysdk/samples --trim sys -a -i system
$ moodss smithy --directory /usr/lib/smithysdk/samples -i system,,interfaces,,tcp
$ moodss smithy --directory /usr/lib/smithysdk/samples --trim if -i ifDescr.1,ifType.1,ifSpeed.1,ifOperStatus.1,,ifInOctets.1,ifInErrors.1,ifOutOctets.1,ifOutErrors.1
$ moodss smithy --directory /usr/lib/smithysdk/samples -a --identifiers sysUpTime.0,sysDescr.0,sysName.0
$ moodss smithy --directory /usr/lib/smithysdk/samples --mibs rfc1213,rfc1514 -i sysDescr,hrSystemProcesses
$ moodss smithy --directory /usr/lib/smithysdk/samples --mibs custom, -i someOid
$ moodss smithy --keyfile /usr/license.key --directory /usr/lib/smithysdk/samples -t ifTable