项目作者: etingof

项目描述 :
SNMP Simulator
高级语言: Python
项目地址: git://github.com/etingof/snmpsim.git
创建时间: 2016-02-24T22:05:44Z
项目社区:https://github.com/etingof/snmpsim

开源协议:BSD 2-Clause "Simplified" License

下载


SNMP Simulator

PyPI
Python Versions
Build status
GitHub license

This is a pure-Python, open source and free implementation of SNMP agents simulator
distributed under 2-clause BSD license.

Features

  • SNMPv1/v2c/v3 support
  • SNMPv3 USM supports MD5/SHA/SHA224/SHA256/SHA384/SHA512 auth and
    DES/3DES/AES128/AES192/AES256 privacy crypto algorithms
  • Runs over IPv4 and/or IPv6 transports
  • Simulates many EngineID’s, each with its own set of simulated objects
  • Varies response based on SNMP Community, Context, source/destination addresses and ports
  • Can gather and store snapshots of SNMP Agents for later simulation
  • Can run simulation based on MIB files, snmpwalk and sapwalk output
  • Can gather simulation data from network traffic or tcpdump snoops
  • Can gather simulation data from external program invocation or a SQL database
  • Can trigger SNMP TRAP/INFORMs on SET operations
  • Capable to simultaneously simulate tens of thousands of Agents
  • Offers REST API based control plane
  • Gathers and reports extensive activity metrics
  • Pure-Python, easy to deploy and highly portable
  • Can be extended by loadable Python snippets

Download

SNMP simulator software is freely available for download from
PyPI and
project site.

Installation

Just run:

  1. $ pip install snmpsim

How to use SNMP simulator

Once installed, invoke snmpsim-command-responder and point it to a directory
with simulation data:

  1. $ snmpsim-command-responder --data-dir=./data --agent-udpv4-endpoint=127.0.0.1:1024

Simulation data is stored in simple plaint-text files having OID|TYPE|VALUE
format:

  1. $ cat ./data/public.snmprec
  2. 1.3.6.1.2.1.1.1.0|4|Linux 2.6.25.5-smp SMP Tue Jun 19 14:58:11 CDT 2007 i686
  3. 1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.8072.3.2.10
  4. 1.3.6.1.2.1.1.3.0|67|233425120
  5. 1.3.6.1.2.1.2.2.1.6.2|4x|00127962f940
  6. 1.3.6.1.2.1.4.22.1.3.2.192.21.54.7|64x|c3dafe61
  7. ...

Simulator maps query parameters like SNMP community names, SNMPv3 contexts or
IP addresses into data files.

You can immediately generate simulation data file by querying existing SNMP agent:

  1. $ snmpsim-record-commands --agent-udpv4-endpoint=demo.snmplabs.com \
  2. --output-file=./data/public.snmprec
  3. SNMP version 2c, Community name: public
  4. Querying UDP/IPv4 agent at 195.218.195.228:161
  5. Agent response timeout: 3.00 secs, retries: 3
  6. Sending initial GETNEXT request for 1.3.6 (stop at <end-of-mib>)....
  7. OIDs dumped: 182, elapsed: 11.97 sec, rate: 7.00 OIDs/sec, errors: 0

Alternatively, you could build simulation data from a MIB file:

  1. $ snmpsim-record-mibs --output-file=./data/public.snmprec \
  2. --mib-module=IF-MIB
  3. # MIB module: IF-MIB, from the beginning till the end
  4. # Starting table IF-MIB::ifTable (1.3.6.1.2.1.2.2)
  5. # Synthesizing row #1 of table 1.3.6.1.2.1.2.2.1
  6. ...
  7. # Finished table 1.3.6.1.2.1.2.2.1 (10 rows)
  8. # End of IF-MIB, 177 OID(s) dumped

Or even sniff on the wire, recover SNMP traffic there and build simulation
data from it.

Besides static files, SNMP simulator can be configured to call its plugin modules
for simulation data. We ship plugins to interface SQL and noSQL databases, file-based
key-value stores and other sources of information.

We maintain publicly available SNMP simulator instance at
demo.snmplabs.com. You are
welcome to query it as much as you wish.

Besides stand-alone deployment described above, third-party
SNMP Simulator control plane
project offers REST API managed mass deployment of multiple snmpsim-command-responder
instances.

Documentation

Detailed information on SNMP simulator usage could be found at
snmpsim site.

Getting help

If something does not work as expected,
open an issue at GitHub or
post your question on Stack Overflow
or try browsing snmpsim mailing list archives.

Feedback and collaboration

I’m interested in bug reports, fixes, suggestions and improvements. Your
pull requests are very welcome!

Copyright (c) 2010-2019, Ilya Etingof. All rights reserved.