All Projects → 1and1 → snmpman

1and1 / snmpman

Licence: Apache-2.0 license
Easy massive SNMP-agent simulation with the use of simple YAML files

Programming Languages

java
68154 projects - #9 most used programming language
Dockerfile
14818 projects
shell
77523 projects

Projects that are alternatives of or similar to snmpman

Pxctest
Execute tests in parallel on multiple iOS Simulators
Stars: ✭ 800 (+2757.14%)
Mutual labels:  simulator, parallel
tnm4j
A simplified SNMP API for Java, based on Jürgen Schönwälder's Tnm extension for Tcl.
Stars: ✭ 34 (+21.43%)
Mutual labels:  snmp, snmp4j
Maro
Multi-Agent Resource Optimization (MARO) platform is an instance of Reinforcement Learning as a Service (RaaS) for real-world resource optimization problems.
Stars: ✭ 378 (+1250%)
Mutual labels:  agent, simulator
sst-core
SST Structural Simulation Toolkit Parallel Discrete Event Core and Services
Stars: ✭ 82 (+192.86%)
Mutual labels:  simulator, parallel
Fusioninventory Agent
FusionInventory Agent
Stars: ✭ 177 (+532.14%)
Mutual labels:  agent, snmp
Myperf4j
High performance Java APM. Powered by ASM. Try it. Test it. If you feel its better, use it.
Stars: ✭ 2,281 (+8046.43%)
Mutual labels:  agent
Ingraind
Data first monitoring agent using (e)BPF, built on RedBPF
Stars: ✭ 251 (+796.43%)
Mutual labels:  agent
Http2 Wrapper
Use HTTP2 the same way like HTTP1
Stars: ✭ 183 (+553.57%)
Mutual labels:  agent
Zorka
Sophisticated monitoring agent for Java
Stars: ✭ 178 (+535.71%)
Mutual labels:  agent
ai-learning-environments
List of environments and competitions for RL and AI training
Stars: ✭ 14 (-50%)
Mutual labels:  simulator
ips2ra
In-place Parallel Super Scalar Radix Sort (IPS²Ra)
Stars: ✭ 22 (-21.43%)
Mutual labels:  parallel
Learningx
Deep & Classical Reinforcement Learning + Machine Learning Examples in Python
Stars: ✭ 241 (+760.71%)
Mutual labels:  agent
Pinpoint C Agent
It is an agent written by C++, PHP, python languages. And we hope to support other languages by this agent. Until now, it supports [PHP],[C/C++] and [PYTHON].
Stars: ✭ 188 (+571.43%)
Mutual labels:  agent
ansible-snmp-exporter
Provision SNMP metrics exporter for prometheus monitoring
Stars: ✭ 18 (-35.71%)
Mutual labels:  snmp
Pkuremote
A port rewritting utility to modify the source or destination port for packets on Windows.
Stars: ✭ 185 (+560.71%)
Mutual labels:  agent
SS3D
Space Station 3D, another remake of SS13, but with an extra D.
Stars: ✭ 180 (+542.86%)
Mutual labels:  simulator
Simple rl
A simple framework for experimenting with Reinforcement Learning in Python.
Stars: ✭ 179 (+539.29%)
Mutual labels:  agent
Recaf
The modern Java bytecode editor
Stars: ✭ 3,374 (+11950%)
Mutual labels:  agent
IPpy
🚀 Ping IP addresses and domains in parallel to find the accessible and inaccessible ones.
Stars: ✭ 54 (+92.86%)
Mutual labels:  parallel
Opensteer
OpenSteer is a C++ library to help build steering behaviors for autonomous characters in games and animation.
Stars: ✭ 202 (+621.43%)
Mutual labels:  agent

SNMPMAN

Java CI with Maven javadoc Maven Central License

The SNMPMAN is a command-line application that simulates SNMP-capable devices and was developed to be usable during unit testing. It may be used to test traffic monitoring applications that execute SNMP queries. Due to the lack of flexibility in already existing alternatives, it was developed by the IONOS SE to improve flexibility. Therefore the SNMPMAN is highly extendable and will be enhanced over time.

Multiple SNMP agents may be started at once and will run in parallel. The agents running in parallel will return the data queried and save it to a textual walk result file. This file will be created by querying a real device. It is also possible to query several device types at once. The query configuration may contain policies on how to dynamically change the query responses. E.g. the response of an ifInOctets may be incremented with each query to simulate traffic. Several variable modifiers are already in existence for different data types.

Usage

SNMPMAN can either be used as

  • Java library
  • Standalone command line program
  • Docker image

Java library usage

You can include the SNMPMAN as a Maven dependency from Maven Central.

<dependency>
    <groupId>com.oneandone</groupId>
    <artifactId>snmpman</artifactId>
    <version>2.1.5</version>
</dependency>

In order to start and stop the simulation use this code snippet as an example:

/* 
 * creates a new instance of the SNMPMAN with the specified configuration file 
 * and executes all agents 
 */
Snmpman snmpman = Snmpman.start(new File("configuration.yaml"));
/* ... do something with the agents */

/* stop the SNMPMAN and all started agents */
snmpman.stop();

Standalone commandline usage

For standalone commandline usage, you need to pass a YAML file as a configuration.

The commandline options are:

 -c (--configuration) FILE  : the path to the configuration YAML
 -h (--help)                : print the help message (Vorgabe: false)

A YAML configuration specifying one SNMP agent, binding to IP 127.0.0.1, UDP port 10000 and SNMP community 'public' is given here:

- name: "example1"
  device: "/opt/snmpman/etc/devices/ios.yaml"
  walk: "/opt/snmpman/etc/walk/example1.walk"
  ip: "127.0.0.1"
  port: 10000
  community: public

The walk can be a SNMP walk extracted with the 'snmpwalk' command line program with the options -On.

Docker usage

There's an experimental docker image available that can be used to simulate SNMP agents.

Available configuration options:

  • SNMPMAN_CONFIG: The location of the default configuration can be changed using the env var SNMPMAN_CONFIG, it defaults to a sample config at /snmpman/etc/configuration.yaml.

Sample call mounting a walk inside the container and binding the container towards the standard SNMP port 161:

docker run -v ABSOLUTE/PATH/TO/walk.txt:/snmpman/etc/walk/example1.walk -p 161:10000/udp stephanfuhrmannionos/snmpman

Installation and building

Prerequisites

  • Java JDK 9+
  • Apache Maven 3.5.2

Building a fat Jar

In order to build the SNMPMAN you can use Apache Maven to build a far JAR:

mvn clean package

After that you find your JAR in snmpman-cli/target/snmpman-cli-$VERSION-SNAPSHOT-jar-with-dependencies.jar.

Execution

To execute an instance of the SNMPMAN you have to start the execution script and specify a value for the -c or --configuration option that lists the path to the configuration YAML file that will be loaded during execution.

Configuration

The SNMPMAN configuration can be found in two main YAML files ...

  • The agent configuration lists all agents which will be started
  • The device type configuration defines the modifiers that will be applied to a range of OIDs

You can find some YAML example configuration files within the test resources of this project in this directory.

The third component of the configuration are the walk files for the agents as specified in the agent configuration.

This is a basic overview and more information will be provided on the project's Wiki pages.

Contribution

This section gives some pointers about contributions to the snmpman project. The project is being developed by the community. Maintainers merge pull-requests, fix critical bugs, etc.

If you fixed or added something useful to the project, you can send a pull-request. It will be reviewed and accepted, or commented on for rework by maintainers. Pull-requests are declined if a maintainer closes the request.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].