Ihr kennt das: auf Arbeit ein neues tolles teures[tm] Gerät eingebaut, welches wunderbar SNMP mit euch spricht, es aber keine gescheiten Monitoringplugins dafür gibt. Und sobald man fernab ein paar freie Minuten hat, um quick’n’dirty ein solches Plugin schreiben zu können, hat man keinen SNMP Zugriff mehr auf das Device :-(

Abhilfe schafft hier ein SNMP Simulator, in meinem Fall SNMP Agent Simulator. Die komplett in Python geschriebene Werkzeugsammlung bringt auch gleich einen SNMP Recorder mit, der ähnlich einem snmpwalk das Gerät einmal abgrast und die ermittelten OIDs und Werte für eine spätere Simulation in eine Datei schreibt:
$ snmprec.py --protocol-version=2c --community=$COMMUNITY --agent-udpv4-endpoint=$ZIELIP --start-oid=1.3.6.1.2 --stop-oid=1.3.6.1.4 --output-file=$TEURES_SNMP_DEVICE.snmprec

Die so erzeugte Datei legt man unter ~/.snmpsim/data/public.snmprec ab und startet anschließend den SNMP Simulator mittels
$ snmpsimd.py --agent-udpv4-endpoint=127.0.0.1:1161
snmpsimd verweigert es als root zu laufen, daher benötigt man eine andere Portnummer als die well-known 161/UDP.

Et voila…

In meinem Fall kam noch ein Klimmzug extra dazu, da ich von der Maschine, auf der snmprec.py installiert ist, keinen SNMP Zugriff auf das Gerät hatte. Das hieß, den UDP Request über FIFO Pipes und einen SSH Forward zum Monitoringserver durch TCP zu tunneln und dort wieder nach UDP übersetzt zum SNMP Gerät zu schicken… Aber das ist eine andere Geschichte und soll ein andermal erzählt werden! :-)