Perl/SNMP:通过ifName获取ifIndex



我是Perl和SNMP的新手,我正试图为我的实习开发一个应用程序来可视化网络。

我有一个第一个脚本,给定mac地址,社区和交换机的ip,可以找到相应的接口速度,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对应的端口?或者其他能帮到我的东西

谢谢,再见。

当涉及到接口名称时,有标准的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(后三个是MRTG (http://www.mrtg.org)所依赖的perl库,它们与MRTG捆绑在一起)。在MRTG的bin目录下,您可以找到cfgmaker实用程序。这是一个perl脚本,它与你指向的任何网络设备进行大量的SNMP对话,以便找出设备的接口,所以如果你想了解如何使用SNMP,它的源代码是一个很好的读物。

对于收集mib的信息,我可以推荐MIBDepot (http://www.mibdepot.com)。他们的搜索功能是免费的。如果你想从他们那里下载mib,他们要求你支付一小笔合理的钱(我建议你这么做,他们的免费搜索服务应该得到一些支持)。

希望这对你有帮助!

我发现了一个非常简单的解决方案:

use Net::SNMP::Interfaces; 
my $interfaces = Net::SNMP::Interfaces->new(Hostname => $hostname, Community => $community); 
my $inter = $interfaces->interface($ifname);
所以我可以得到ifindex: $inter->index();
但我需要找到mac地址,我没有VLAN。有人知道吗?由于

最新更新