我是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来查找所有其他信息。获取ifIndex表对应端口的哪个oid?或者可以帮助我的东西。
谢谢, 再见。
答案 0 :(得分:1)
说到接口名称,有标准的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中,在bin目录下,您可以找到实用程序cfgmaker。这是一个perl脚本,它将大量的SNMP与你指向的网络设备进行对话,以便弄清楚设备具有哪些接口,因此如果你想了解如何与perl一起使用SNMP,它的来源是一个很好的读取。
为了收集有关MIB的信息,我可以推荐MIBDepot(http://www.mibdepot.com)。他们的搜索功能是免费的。如果你想从他们那里下载MIB,他们需要你支付一小笔合理的金钱(我建议你这样做,他们应该为他们的免费搜索服务提供一些支持)。
希望这有帮助!
答案 1 :(得分:0)
我找到了一个非常简单的解决方案:
use Net::SNMP::Interfaces;
my $interfaces = Net::SNMP::Interfaces->new(Hostname => $hostname, Community => $community);
my $inter = $interfaces->interface($ifname);
所以,我可以得到ifindex:$inter->index();
但我也需要找到mac地址,而且我没有VLAN。
任何人 ?
感谢