Как сообщает Википедия, 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 | 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 |
Для симуляции ответов принтера используйте тип_значения равным 4, что означает OctetString.
Я использовал, в частности, файл public.snmprec такого вида:
1 | 1.3.6.1.2.1.43.5.1.1.17.1|4|A7980275412 |
При запуске симулятор будет искать файл, симулирующий ответы 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 за зачётный симулятор!