SnmpSim. Запускаем в Windows

Как сообщает Википедия, SNMP (англ. Simple Network Management Protocol — простой протокол сетевого управления) — стандартный интернет-протокол для управления устройствами в IP-сетях на основе архитектур TCP/UDP. К поддерживающим SNMP устройствам относятся маршрутизаторы, коммутаторы, серверы, рабочие станции, принтеры, модемные стойки и другие. Протокол обычно используется в системах сетевого управления для контроля подключённых к сети устройств на предмет условий, которые требуют внимания администратора.

Касательно принтеров возможен опрос их характеристик по SNMP-протоколу, например: количество отпечатанных листов разных форматов, количество оставшегося ресурса фотобарабана и т.д.
Иногда требуется симулировать ответы устройства по SNMP для целей тестирования, в том числе нагрузочного.

В вопросе симуляции ответов SNMP устройств отличным помощником выступает SNMP Simulator, который сам себя характеризует как pure-Python, open source and free implementation of SNMP agents simulator. Исходные коды симулятора расположены на Github по адресу: https://github.com/etingof/snmpsim

Для функционирования симулятора потребуется Python любой версии из ряда: 2.4, 2.5, 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7. Скачать его можно отсюда: https://www.python.org/downloads/

Для установки симулятора введите команду в терминале (PowerShell, CommandPrompt):

1
$ pip install snmpsim

Далее для симуляции потребуется текстовый файл public.snmprec, содержащий в каждой отдельной строке:

OID|тип_значения|значение

Например:

1
2
3
4
5
6
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
1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.8072.3.2.10
1.3.6.1.2.1.1.3.0|67|233425120
1.3.6.1.2.1.2.2.1.6.2|4x|00127962f940
1.3.6.1.2.1.4.22.1.3.2.192.21.54.7|64x|c3dafe61
...

Для симуляции ответов принтера используйте тип_значения равным 4, что означает OctetString.

Я использовал, в частности, файл public.snmprec такого вида:

1
2
3
4
5
1.3.6.1.2.1.43.5.1.1.17.1|4|A7980275412
1.3.6.1.2.1.25.3.2.1.3.1|4|KONICA MINOLTA bizhub C227
1.3.6.1.4.1.18334.1.1.1.5.7.2.3.1.5.1|4|735
1.3.6.1.4.1.18334.1.1.1.5.7.2.2.1.5.2.1|4|190
1.3.6.1.4.1.18334.1.1.1.5.7.2.2.1.5.1.1|4|5

При запуске симулятор будет искать файл, симулирующий ответы public.snmprec, по нескольким путям, но я рекомендую разместить public.snmprec в папке:

1
C:\Users\{userName}\SNMP Simulator\Data

Запустить симулятор можно из терминала командой:

1
snmpsimd.py --data-dir=./data --agent-udpv4-endpoint=0.0.0.0:161

Симулятор будет слушать 161 порт и отвечать на входящие OID значением из файла public.snmprec, если оно там присутствует.

Проверить обмен с симулятором можно с помощью программы MIB Browser

Ну вот и всё! Спасибо Ilya Etingof за зачётный симулятор!