Как получить данные в perl скрипте из устройства NetPing по SNMP?
Для использования SNMP OID ресурсов в perl скриптах необходимо использовать модуль Net::SNMP, в деривативах Debian он находится в пакете libnet-snmp-perl. Подробнее об интерфейсе этого пакета можно почитать по ссылке: http://search.cpan.org/search?module=Net::SNMP
Вообще ссылка http://search.cpan.org очень полезна при работе с perl скриптами :)
Ниже приведен пример скрипта на perl, который читает значение температуры из устройства NetPing TS v2 с версией ПО DKSF 50.4.X.X-08:
#!/usr/bin/perl
# Скрипт демонстрирует работу с SNMP # При запуске должен напечатать примерно следующее: # "Значение OID 1.3.6.1.4.1.25728.50.8.1017 = 22" # "Большая тройка"
use strict; use warnings; use diagnostics; # Модуль для работы с SNMP # В Debian и его деривативах это пакет libnet-snmp-perl use Net::SNMP; # Что будем оправшивать my $snmp_host = 'netping'; # IP или hostname my $snmp_community = 'SWITCH'; # SNMP Community my $snmp_oid = '1.3.6.1.4.1.25728.50.8.1017'; # OID для опроса # Устанавливаем соединение my $snmp_session = Net::SNMP->session( -hostname => $snmp_host, -community => $snmp_community, -version => 1, # Явно указываем версию протокола ) or die('Не удалось соединиться!'); # Пытаемся вычитать значение # В -varbindlist должна быть ссылка на массив OID'ов # В нашем примере только один OID # В $result будет ссылка на хэш вида: OID => Значение my $result = $snmp_session->get_request( -varbindlist => [$snmp_oid], ) or die('Не удалось выполнить запрос!'); # Печатаем результат print "Значение OID $snmp_oid = $result->{$snmp_oid}\n"; # Закрываем соединение $snmp_session->close(); Загрузить этот скрипт в виде файла можно - Здесь
|