Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
zaum-kurs-2013.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
654.85 Кб
Скачать

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)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]