- •Засоби аналізу та управління мережами методичні вказівки
- •1.1Основи роботи з PySnmp
- •1.2Керування архітектурою snmp
- •1.2.1PySnmp архітектура
- •1.3Стандартні snmp додатки (Синхронні додатки)
- •1.3.1Генератор синхронних команд
- •1.3.2Синхронний оригінатор повідомлень
- •1.4Стандартні snmp додатки (Асинхронні додатки)
- •1.4.1Асинхронний генератор команд
- •1.4.2Асинхронний оригінатор повідомлення
- •1.4.3Конфігурація безпеки
- •1.4.4Конфігурація транспортування
- •1.5.1Managed Objects імена і значення
- •1.5.2Managed Objects значення
- •1.6.1Модель даних для керованих об'єктів
- •1.7Приклад PySnmp скриптів
- •1.8NativeApi для стандартних додатків snmPv3
- •1.9Низький рівень api для операцій протоколу snmPv1/v2c
- •1.10Подальший розвиток
- •2.1Встановлення
- •2.2Використання
- •2.3Структура
- •3.1Основні особливості модуля:
- •3.2Елементи модуля
- •3.3Переваги і недоліки
- •4.1Особливості
- •4.2Опис “NetSnmp” модуля
- •4.3Використання Net-snmp і iPython
- •4.3.1Встановлення та налаштування Net-snmp
- •4.3.2Написання коду
- •4.4Переваги і недоліки
- •Засоби аналізу та управління мережами методичні вказівки
1.1Основи роботи з PySnmp
Після того як ви завантажили і встановили PySNMP бібліотеку на Linux/Windows/MacOS систему, ви повинні бути в змозі вирішити основне завданням SNMP прямо з вашого Python – отримати деякі дані з віддаленого SNMP Agent. Код виконує SNMP GET операції sysDescr.0 об'єкта в загальнодоступній SNMP-агент:
from pysnmp.entity.rfc3413.oneliner import cmdgen
cmdGen = cmdgen.CommandGenerator()
errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
cmdgen.CommunityData('demopublic'),
cmdgen.UdpTransportTarget(('test.net-snmp.org', 161)),
cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),
lookupNames=True, lookupValues=True
)
# Check for errors and print out results
if errorIndication:
print(errorIndication)
elif errorStatus:
print(errorStatus)
else:
for name, val in varBinds:
print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))
Якщо все працює як треба, ви отримаєте дану відповідь на вашій консолі:
...
SNMPv2-MIB :: sysDescr. "0" = test.net-snmp.org
>>>
Щоб відправити повідомлення тривіальної пастки для вашого уявного SNMP-менеджера localhost, просто виріжте та вставте наступний код:
from pysnmp.entity.rfc3413.oneliner import ntforg
from pysnmp.proto import rfc1902
ntfOrg = ntforg.NotificationOriginator()
ntfOrg.sendNotification(
ntforg.CommunityData('public'),
ntforg.UdpTransportTarget(('localhost', 162)),
'trap',
ntforg.MibVariable('SNMPv2-MIB', 'coldStart'),
('1.3.6.1.2.1.1.1.0', rfc1902.OctetString('my system'))
1.2Керування архітектурою snmp
Модель управління SNMP включає в себе три окремі частини – агент, менеджер і проксі для комутації один з одним по мережі.
Агент – в основному програмне забезпечення, яке працює десь в мережевому пристрої та має наступні властивості:
SNMP підтримка протоколу
Доступ до керованих внутрішніх пристроїв
Остання особливість є джерелом інформації для управління агента.
Сучасний стандарт SNMP запропонував функціональне розщеплення агента на дві частини. Такі агенти можуть обробляти SNMP для локальних процесів і називається субагент, які взаємодіють з керованим внутрішнім пристроєм. Зв'язок між Master агентом і його субагентом здійснюється з використанням спрощеної версії оригінального SNMP протокола, відомий як AgentX, який призначений для роботи тільки в межах одного хоста.
Менеджер, як правило, додаток, що використовуються людиною (або демоном) для виконання різних завдань управління мережами.
Іноді, агенти та менеджери можуть працювати як єдине ціле, яке називається проксі-сервером. Проксі часто можна побачити на рівні додатків міжмережевого екрану або він може служити в якості перекладача SNMP протоколу.SNMP підхід є представленням кожного компонента пристрою в якості імені об'єкта, схожі на іменовані змінні як в мовах програмування.
Для представлення групи схожих компонентів пристрою, такі як мережеві інтерфейси, керовані об'єкти можуть бути організовані в так звані концептуальні таблиці.
Диспетчер коммтується з агентом, посилаючи йому повідомлення декількох типів. Тип повідомлення передбачає певні дії,які повинні бути прийняті. Наприклад, GET інструктує агента повідомлення доповісти значення керованих об'єктів, імена яких вказані в повідомленні.
Це також знак для агента повідомити менеджера,що відбулася подія. Це робиться за допомогою так званих Trap повідомленнь.
Для іменування керованих об'єктів, SNMP використовує поняття ідентифікатор об'єкта . Як приклад керованого об'єкта, iso.org.dod.internet.mgmt.mib-2.system.sysName.0 являє ім'я пристрою, на якому запущений агент.
Всякий раз, коли SNMP з’єднується один з одним, вони відносяться до керованих об'єктів, чия семантика (і тип значення) повинні бути заздалегідь відомі обом сторонам. SNMP-агент може розглядатися в якості основного джерела інформації про Managed Objects, так як вони здійснюються агентом. У цій моделі, менеджер повинен мати карту керованих об'єктів, що містяться всередині кожного агента.
SNMP стандарт містить безліч мовних конструкцій ASN.1 (таких, як ASN.1 підтипів і макросів), яка називається структура управлінської інформації (Management Information Base ). Колекції відповідних керованих об'єктів описується в термінах SMI, які включають Management Information Base ( MIB) модулі.
Зазвичай використовуються керовані об'єкти, вони утворюють ядро бази MIB, які стають частиною стандартного протоколу SNMP. Решта MIB зазвичай створюються постачальниками.
