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

1.7Приклад PySnmp скриптів

Застосовується до PySNMP 4.2.3 і вище.

SNMP насправді непростий (PySNMP реалізації займає 15K рядків коду на Python), але PySNMP намагається ізолювати складності і дозволяє виконувати типові операції SNMP швидко та інтуїтивно зрозумілим способом. Такщо вам слід приступити до вирішення вашої проблеми з SNMP на найвищому рівніAPI, який називається "Oneliner" в PySNMP.

Перед тим, як вирізати і вставити в код у ваш Python перекладача, не забудьте встановити pysnmp, виконайте:

# Easy_install pysnmp

Також переконайтеся, або налаштуйте місцеве SNMPD і / або snmptrapd або використовуйте адресу і SNMP облікові дані вашого SNMP-агента в прикладах, щоб дозволити їм працювати.

Якщо в PySNMP додатку виникає непрогнозована помилка, спробуйте включити вбудоване PySNMP налагодження, додавши наступний фрагмент коду на початок вашої програми:

from pysnmp import debug

debug.setLogger(debug.Debug('all'))

Запустіть програму і подивіться STDERR. Debug ініціалізатор дозволяє налагодження конкретної PySNMP підсистеми, 'all ' дозволяє всім з них. Інші корисні значення: 'io', 'msgproc', 'secmod', 'mibbuild'

API високого рівня для стандартних додатків SNMPv3

Наступний код виконує SNMP GET операції:

  • використанням APIOneliner

  • з протоколом версії 2c

  • з 'public' ім'ям

  • IPv4/UDP

  • прослуховування агента на локальній машині (UDP порт 161)

from pysnmp.entity.rfc3413.oneliner import cmdgen

cmdGen = cmdgen.CommandGenerator()

errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(

cmdgen.CommunityData('public'),

cmdgen.UdpTransportTarget(('localhost', 161)),

cmdgen.MibVariable('SNMPv2-MIB', 'sysName', 0)

)

# Check for errors and print out results

if errorIndication:

print(errorIndication)

else:

if errorStatus:

print('%s at %s' % (

errorStatus.prettyPrint(),

errorIndex and varBinds[int(errorIndex)-1] or '?'

)

)

else:

for name, val in varBinds:

print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))

Більше прикладів на Oneliner API використовуться з SNMP такими застосуваннями:

Команда GET генератор (snmpget)

Команда SET генератор (snmpset)

GETNEXT команда генератор (snmpwalk)

GetBulk команда генератор (snmpbulkwalk)

Наступний код відправляє SNMP TRAP повідомлення:

  • Використання SNMP v2c

  • З 'public' ім'я

  • IPv4/UDP

  • Відправка повідомлення TRAP

  • “coldStart” TRAP ID зазначено як символ 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)

1.8NativeApi для стандартних додатків snmPv3

Якщо ви опинитеся не в змозі використовувати певні функції SNMP з "Oneliner" API, ваш наступний крок буде використовуватипослуги SNMPv3 двигуна через один зі стандартних додатків SNMP (зазначений RFC3413).

Оскільки всі ці приклади побудовані на загальних PySNMP компонентах, таких як SNMP двигун, I / O диспетчера, конфігурація сховища даних, ви завжди можете комбінувати частини з прикладів для отримання нової версії SNMP додатка найбільш підходящого до вашим потреб.

SNMPv3 додаток генератора команд:

  • Команда GET генератор (snmpget)

  • Команда SET генератор (snmpset)

  • GETNEXT команда генератор (snmpwalk)

  • GetBulk команда генератор (snmpbulkwalk)

SNMPv3 додаток команди відповідача:

  • GET / SET / GETNEXT / GetBulk команда відповідача (SNMP Agent)

  • SNMPv3 додаток оригінатор повідомлення:

  • TRAP повідомлення ініціатора (SNMPTRAP)

  • ІNFORM повідомлення ініціатора (snmpinform)

  • SNMPv3 додаток повідомлення приймач:

  • Повідомлення приймач (ресивер SNMP TRAP)

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