Perl/SNMP:通过 ifName 获取 ifIndex

发布于 2024-10-31 10:33:44 字数 476 浏览 4 评论 0原文

我是 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表?或可以帮助我的东西。

谢谢, 再见。

i'm new to Perl and SNMP and i'm trying to develop an application to visualise the network for my internship.

I have a first script, given a mac address, a community and a switch's ip, can find the correspondant interfaceSpeed, ifAlias, duplex mode...

$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)  

For my second script, I want to give interface name, community and switch's ip to find all others informations. Which oid to get a table of ifIndex corresponding to port ? or something that could help me.

Thanks,
Bye.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

请恋爱 2024-11-07 10:33:44

当谈到接口名称时,有标准的 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,他们会要求您支付少量合理的费用(我建议您这样做,他们的免费搜索服务值得一些支持)。

希望这有帮助!

When it comes to interface names, there is the standard MIB-II which has ifDescr (OID: 1.3.6.1.2.1.2.2.1.2) which contains some sort of unique name for each interface, as well as ifAlias (OID: 1.3.6.1.2.1.31.1.1.1.18) which on Cisco IOS boxes usually has a more useful device name.

Do some experimentation to find out what these MIBs look like (and what names your switch insists to use for the interfaces in the ifDescr and the ifAlias fields). Get some tool for 'walking' the SNMP MIB trees and subtrees to explore what things look like in it. For windows, IIRC Getif is a good MIB-browser. If you are on a linux box (or other UNIX) I would recommend Net-SNMP, which provides a good command line tool for walking SNMP MIBs.

For perl libraries I would recommend Net::SNMP (available on CPAN), even if it is a bit heavy on various dependencies (a lot of cryptography related modules necessary to support the security features of SNMPv3) or SNMP_Session.pm+SNMP_util.pm+BER.pm (the latter three are the perl libraries MRTG (http://www.mrtg.org) relies on and they come bundled with it). In MRTG, under the bin directory, you find the utility cfgmaker. It is a perl script which talks a lot of SNMP to whatever network gear you point it to in order to figure out what interfaces the device has, so it's source is a good read if you want to understand how SNMP can be used with perl.

For gathering information about MIBs I can recommend MIBDepot (http://www.mibdepot.com). Their search function is free. If you want to download MIBs from them they require you to pay a small, reasonable amount of money (something I recommend you do, they deserve some support for their free search services).

Hope this helps!

黒涩兲箜 2024-11-07 10:33:44

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

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

所以,我可以获得 ifindex : $inter->index();
但我也需要找到 mac 地址,但我没有 VLAN。
有人吗?
谢谢

I've found a really simple solution :

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

So, I can get ifindex : $inter->index();
But I need to find mac address too and I don't have the VLAN.
Anyone ?
Thanks

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文