【问题标题】:Perl/SNMP : get ifIndex by ifNamePerl/SNMP:通过 ifName 获取 ifIndex
【发布时间】:2011-04-13 16:06:56
【问题描述】:

我是 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 得到一个对应于 port 的 ifIndex 表?或者可以帮助我的东西。

谢谢, 再见。

【问题讨论】:

    标签: perl snmp


    【解决方案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 对话,以便确定设备具有哪些接口,因此如果您想了解如何将 SNMP 与 perl 一起使用,那么它的源代码是一本很好的阅读材料。

    要收集有关 MIB 的信息,我可以推荐 MIBDepot (http://www.mibdepot.com)。他们的搜索功能是免费的。如果您想从他们那里下载 MIB,他们需要您支付少量合理的费用(我建议您这样做,他们的免费搜索服务应该得到一些支持)。

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      我找到了一个非常简单的解决方案:

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

      所以,我可以得到 ifindex :$inter->index();
      但是我也需要找到 MAC 地址,而且我没有 VLAN。 任何人 ? 谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 2014-10-12
        相关资源
        最近更新 更多