SmithSNMP is a fork from SmartSNMP with more advanced features ahead such as SNMPv3, encryption and SNMPv2 trap. Just like the character in the famous science fiction movie Matrix, Agent Smith, with great power and is programmed to keep the system in order.
SmithSNMP is an easy-config agent supporting SNMP v1/v2c/v3 and AgentX protocol. It is written in C99 and Lua5.1. It can be run on general Linux and BSD platforms as well as embedded systems like OpenWRT. The agent can not only be compatible with command utilities but also SNMPv2 trap daemon of Net-SNMP.
SmithSNMP is licensed under GPLv2 with "PRIVATE MIB" EXCEPTION, see LICENSE
file for more details.
The biggest bonus of this agent is that private MIBs in Lua are allowed to be
customized and in hot-loading in config
and mibs
directory.
As for Ubuntu, you should install libraries such as:
# lua5.1
sudo apt-get install -y lua5.1 liblua5.1-0-dev
# scons
sudo apt-get install -y scons
# luarocks
sudo apt-get install -y luarocks
# clone with git
git clone https://github.com/begeekmyfriend/smithsnmp.git
For more build options, type:
scons --help
You will get:
... SCons Options ...
Local Options:
--with-agentx enable agentx feature you want to use
--without-trap disable trap feature you do not want to use
--without-crypto disable crypto feature you do not want to use
--without-md5 disable MD5 feature you do not want to use
--without-sha disable SHA feature you do not want to use
--without-aes disable AES feature you do not want to use
--evloop=[select|kqueue|epoll]
select event loop model
--with-cflags=CFLAGS use CFLAGS as compile time arguments (will
ignore CFLAGS env)
--with-ldflags=LDFLAGS use LDFLAGS as link time arguments to ld (will
ignore LDFLAGS env)
--with-libs=LIBS use LIBS as link time arguments to ld
--with-liblua=DIR use liblua in DIR
You can specify options above you need to build the project.
For luarocks build, type:
sudo luarocks build smithsnmp-scm-1.rockspec
There are three test modes.
In this mode the agent is running as an independent agent and process SNMP datagrams from the clients.
Any SNMP daemon installed in your system should be shut down before testing.
sudo /etc/init.d/snmpd stop
We start SmithSNMP as a daemon:
cd /usr/local/lib/luarocks/rocks/smithsnmp/scm-1
sudo ./tests/snmp_daemon.sh
And then run the testcases:
./tests/testcases.sh
In this mode the agent is running as a sub-agent while Net-SNMP as the
master agent from which AgentX datagrams will be received. So we need to
download NET-SNMP-5.7.3
source and build out the images under tests
directory:
cd /usr/local/lib/luarocks/rocks/smithsnmp/scm-1
sudo ./tests/netsnmp_build.sh
And then start Net-SNMP as the master agent:
sudo ./tests/netsnmpd.sh
And then start SmithSNMP as a sub-agent:
sudo ./tests/agentx_daemon.sh
And then run the testcases:
./tests/testcases.sh
Especially if you want to test SNMP trap feature, start snmptrapd
on the
default port 162:
cd /usr/local/lib/luarocks/rocks/smithsnmp/scm-1
sudo ./tests/netsnmptrapd.sh
Now enable the trap feature when SmithSNMP is running as an agent on the default port 161):
snmpset -v2c -cprivate localhost .1.3.6.1.6.3.1.1.4.42.0 t 100
And you can disable the trap feature any time as you like:
snmpset -v2c -cprivate localhost .1.3.6.1.6.3.1.1.4.42.0 t 0