Perl / SNMP: получить ifIndex по ifName - PullRequest
0 голосов
/ 08 апреля 2011

Я новичок в Perl и SNMP и пытаюсь разработать приложение для визуализации сети для моей стажировки.

У меня есть первый скрипт, с учетом MAC-адреса, сообщества и IP-адреса коммутатора, который может найти соответствующий интерфейс InterfaceSpeed, ifAlias, дуплексный режим ...

$perl mac-ifindex.pl -m 203B697B0438 -h 192.168.1.1 -c public  
Adresse mac : 203B697B0438 => (VLAN : 1, NumPortBridge : 25)  
Ifindex : 10101  
Vitesse : 1000  
Alias : switch-cisco-3750  
Interface name : Gi0/1  
Duplex : 3 (full)  

Для моего второго скрипта я хочу дать имя интерфейса, сообщество и IP-адрес коммутатора, чтобы найти всю остальную информацию. Какой oid получить таблицу ifIndex, соответствующую порту? или что-то, что могло бы помочь мне.

Спасибо, Bye.

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Когда речь идет об именах интерфейсов, существует стандарт MIB-II, который имеет ifDescr (OID: 1.3.6.1.2.1.2.2.1.2), который содержит некоторое своего рода уникальное имя для каждого интерфейса,а также ifAlias ​​(OID: 1.3.6.1.2.1.31.1.1.1.18), который на блоках Cisco IOS обычно имеет более полезное имя устройства.

Проведите некоторые эксперименты, чтобы выяснить, как выглядят эти MIB (и какие имена ваш коммутатор настаивает на использовании для интерфейсов в полях ifDescr и ifAlias).Получите некоторый инструмент для «обхода» деревьев и поддеревьев SNMP MIB, чтобы исследовать, как все это выглядит.Для Windows IIRC Getif - хороший MIB-браузер.Если вы используете Linux (или другой UNIX), я бы порекомендовал Net-SNMP, который предоставляет хороший инструмент командной строки для обхода SNMP MIB.

Для библиотек Perl я бы порекомендовал Net :: SNMP (доступен наCPAN), даже если он немного перегружен различными зависимостями (множество модулей, связанных с криптографией, необходимых для поддержки функций безопасности SNMPv3) или SNMP_Session.pm + SNMP_util.pm + BER.pm (последние три - библиотеки perl MRTG(http://www.mrtg.org) полагается, и они идут в комплекте с ним.) В MRTG, под каталогом bin, вы найдете утилиту cfgmaker. Это скрипт на perl, который передает много SNMP любому сетевому устройству, на которое вы указываетечтобы выяснить, какие интерфейсы есть у устройства, его источник - хорошее чтение, если вы хотите понять, как можно использовать SNMP с perl.

Для сбора информации о MIB я могу порекомендовать MIBDepot (http://www.mibdepot.com). Их функция поиска бесплатна. Если вы хотите загрузить с них MIB, они требуют, чтобы вы заплатили небольшую разумную суммуденег (то, что я рекомендую вам сделать, они заслуживают некоторой поддержки для своих бесплатных служб поиска).

Надеюсь, это поможет!

0 голосов
/ 13 апреля 2011

Я нашел действительно простое решение:

use Net::SNMP::Interfaces; 
my $interfaces = Net::SNMP::Interfaces->new(Hostname => $hostname, Community => $community); 
my $inter = $interfaces->interface($ifname);

Итак, я могу получить ifindex: $inter->index();
Но мне тоже нужно найти MAC-адрес, и у меня нет VLAN,Кто-нибудь ?Спасибо

...