interactive SNMP tool
Interactive SNMP tool.
Snimpy is a Python-based tool providing a simple interface to build SNMP query. Here is a very simplistic example that allows us to display the routing table of a given host:
load("IP-FORWARD-MIB") m=M("localhost", "public", 2) routes = m.ipCidrRouteNextHop for x in routes: net, netmask, tos, src = x print("%15s/%-15s via %-15s src %-15s" % (net, netmask, routes[x], src))
You can either use Snimpy interactively throught its console (derived from Python own console or from IPython if available) or write Snimpy scripts which are just Python scripts with some global variables available.
Snimpy requires libsmi to work correctly. See the documentation for more information.
Snimpy is aimed at being the more Pythonic possible. You should forget that you are doing SNMP requests. Snimpy will rely on MIB to hide SNMP details. Here are some “features”:
- Fix IPython interactive shell.S
- Fix IPv6 handling for sessions.
- Ability for a session to return None instead of raising an exception.
- Ability to walk a table (if the first index is accessible).
- Ability to do a partial walk (courtesy of Alex Unigovsky).
- Fix thread-safety problem introduced in 0.8.6. This also undo any improvement advertised in 0.8.6 when using multiple threads. However, performance should be kept when using a single thread.
- Ability to specify a module name when querying a manager.
- Compatibility with PySNMP 4.3
- Array-like interface for OIDs.
- Ability to restrict lookups to a specific MIB: m[‘IF-MIB’].ifDescr.
- Fix multithread support with SNMPv3 (with a performance impact).
- Major speed improvement.
- Major memory usage improvement.
- Ability to set SMI search path (with mib.path())
- Fix documentation build on Read the Doc.
- Add a loose mode to manager to loosen type coercion.
- More CFFI workarounds, including cross-compilation support.
- Ability to override a node type.
- Automatic workaround for “SNMP too big” error message.