
- •Засоби аналізу та управління мережами методичні вказівки
- •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.3.2Синхронний оригінатор повідомлень
Додаток оригінатор повідомлень реалізується в рамках одного класу:
Клас NotificationOriginator ([ snmpContext ])
Створює SNMP об'єкт Оригінатор повідомлення.
Рекомендується зберегти і повторно використовувати NotificationOriginator примірник) так довго, як можливо в рамках програми.
Всі повідомлення направляються у виклик наступним методом:
sendNotification ( authData , transportTarget , NotifyType , NotificationType , * varBinds )
Відправляє непідтверджене (TRAP) або підтверджене (INFORM) SNMP повідомлення і, можливо, повернутає повідомлення про помилку.
AuthData і transportTarget параметри мають ту ж семантику, як і в getCmd методі.
ПараметрNotifyType визначає тип сповіщень, які будуть створені. Підтримуються наступні значення "trap" для непідтверджених повідомлень або "inform" для підтвердженних:
NotificationType параметр вказує на вид події, щоб повідомити диспетчера про ім'я об'єкта у вигляді SMINOTIFICATION-TYPE. Або ObjectIdentifier екземпляр класу, його значення і ніціалізації (наприклад, '1 .3.6.1.6.3.1.1.5.1 ') або MibVariable об'єкт може бути використаний на вході.
При відправці пасток SNMPv1,параметр NotificationType кодується як загальні і спеціальні пастки номери яких жорстко зав’язані в SNMPv1 TRAP PDU, але відсутні в SNMP v2c TRAP іINFORM PDUs.
NotificationType |
GenericTrap |
SpecificTrap |
1.3.6.1.6.3.1.1.5.1 |
COLDSTART (0) |
0 |
1.3.6.1.6.3.1.1.5.2 |
warmStart (1) |
0 |
1.3.6.1.6.3.1.1.5.3 |
linkDown (2) |
0 |
1.3.6.1.6.3.1.1.5.4 |
LinkUp (3) |
0 |
1.3.6.1.6.3.1.1.5.5 |
authenticationFailure (4) |
0 |
1.3.6.1.6.3.1.1.5.6 |
egpNeighborLoss (5) |
0 |
1.3.6.1.6.3.1.1.5.0.1 |
enterpriseSpecific (6) |
1 |
1.3.6.1.6.3.1.1.5.0.999 |
enterpriseSpecific (6) |
999 |
1.3.6.1.6.3.1.1.5.0.N |
enterpriseSpecific (6) |
N |
* VarBinds вхідний параметр, є кортежом керованих об'єктів, має бути переданий менеджеру разом з повідомленням.
Синтаксис * varBinds такий ж, як у getCmd методі.
SendNotification метод повертає параметр errorIndication, який має той же зміст, що і в getCmd методі.
При відправці SNMP пастки до системи SNMPv1, PDU параметри, які присутні в SNMPv1 PDU, але відсутні в SNMPv2cPDU зіставляються один до одного за допомогою спеціальних керованих Inctance об'єктів значеннями в * varBinds:
SNMP v1 PDU enterprise параметр передається як значення 1.3.6.1.6.3.1.1.4.3.0 керований екземпляр об'єкта в * varBinds . Якщо параметр не вказано, значення за замовчуванням 1.3.6.1.6.3.1.1.5. Якщо Generic закодований вNotificationType є enterpriseSpecific , enterprise параметр неявно ініціалізується в NotificationType значенням мінус останній суб-OID.
SNMP v1 PDU agent-addr параметр передається в якості значення 1.3.6.1.6.3.18.1.3.0 керованого екземпляра об'єкта в * varBinds .
SNMP v1 PDU PDU time-stamp параметр передається як значення 1.3.6.1.2.1.1.3.0 керованого екземпляра об'єкта в * varBinds.
1.3.2.1TRAP Notification
Наступний код відправляє SNMP v2c TRAP повідомлення:
Використання SNMP v2c
"public " ім'я
IPv4/UDP
відправляє повідомлення TRAP
з TRAPID 'coldStart' зазначено як символ MIB
включає керований об'єкт даних, вказаних в якості символу MIB
from pysnmp.entity.rfc3413.oneliner import ntforg
ntfOrg = ntforg.NotificationOriginator()
errorIndication = ntfOrg.sendNotification(
ntforg.CommunityData('public'),
ntforg.UdpTransportTarget(('localhost', 162)),
'trap',
ntforg.MibVariable('SNMPv2-MIB', 'coldStart'),
(ntforg.MibVariable('SNMPv2-MIB', 'sysName', 0), 'new name')
)
if errorIndication:
print('Notification not sent: %s' % errorIndication)
Щоб відправити SNMP v1 TRAP з використанням стандартних повідомлень Оригінатора додатків API, може знадобитись передати або змінити деякі з стандартних SNMPv1 полів PDU, які неприсутні в SNMPv2c PDU і такимчином в API.
Наступний приклад посилає SNMP v1 TRAP повідомлення, яке перевизначає неявні значення за замовчуванням:
Використання SNMP v1
"public " ім'я
IPv4/UDP
Відправвляє повідомлення TRAP
З Generic Trap № 6 (enterpriseSpecific) і спеціальною пасткою 432
Головної місцевої snmpEngine в Uptime зізначення 12345
Агент перевизначення адрес '127 .0.0.1 '
Перевизначення enterprise OID з 1.3.6.1.4.1.20408.4.1.1.2
Включає керованого об'єкта інформації .3.6.1.2.1.1.1.0 '1 '='mysystem' , який визначається як пара OID значень
from pysnmp.entity.rfc3413.oneliner import ntforg
from pysnmp.proto import rfc1902
ntfOrg = ntforg.NotificationOriginator()
errorIndication = ntfOrg.sendNotification(
ntforg.CommunityData('public', mpModel=0),
ntforg.UdpTransportTarget(('localhost', 162)),
'trap',
'1.3.6.1.4.1.20408.4.1.1.2.0.432',
('1.3.6.1.2.1.1.3.0', 12345),
('1.3.6.1.6.3.18.1.3.0', '127.0.0.1'),
('1.3.6.1.6.3.1.1.4.3.0', '1.3.6.1.4.1.20408.4.1.1.2'),
('1.3.6.1.2.1.1.1.0', rfc1902.OctetString('my system'))
)
if errorIndication:
print('Notification not sent: %s' % errorIndication)
1.3.2.2INFORM Notification
Наступний код відправляє SNMPv2c INFORM повідомлення через SNMPv3:
Використання SNMP v3
З користувачем USR-md5-de, аутентифікація: MD5, 3DES
IPv4/UDP
ВідправляєINFORM повідомлення
“warmStart” TRAP ID вказаний у вигляді рядка OID
включає керованого об'єкта інформації .3.6.1.2.1.1.1.0 '1 '='mysystem', який визначається як пара OID значень
from pysnmp.entity.rfc3413.oneliner import ntforg
from pysnmp.proto import rfc1902
ntfOrg = ntforg.NotificationOriginator()
errorIndication = ntfOrg.sendNotification(
ntforg.UsmUserData('usr-md5-des', 'authkey1', 'privkey1'),
ntforg.UdpTransportTarget(('localhost', 162)),
'inform',
'1.3.6.1.6.3.1.1.5.2',
('1.3.6.1.2.1.1.5.0', rfc1902.OctetString('system name'))
)
if errorIndication:
print('Notification not sent: %s' % errorIndication)