为了我的实习,我必须编码网络主管。我正在写perl脚本以从交换机上的接口名称查找所有信息(速度,mac地址,双工...)。 该模块中有一个“ifPhysAddress”函数,但它返回交换机接口的mac地址,而不是与其连接的设备的mac地址。 我如何找到mac地址? 感谢Perl&Net :: SNMP :: Interfaces ::详细信息,如何获取mac地址?
这里是我已经开始:
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use SnmpTable;
use Net::MAC;
use Net::SNMP;
use Net::SNMP::Interfaces;
my $ifname;
my $hostname;
my $community;
my $version = 1;
GetOptions("ifname=s" => \$ifname,
"host=s" => \$hostname,
"community=s" => \$community,
"protocol:s" => \$version);
my $interfaces = Net::SNMP::Interfaces->new(Hostname => $hostname, Community => $community);
my $inter = $interfaces->interface($ifname);
#On récupere l'identifiant de l'interface $ifname
my $ifindex = $inter->index();
#Vitesse
my $vitesse = $inter->ifHighSpeed();
#Alias
my $ifalias = $inter->ifAlias();
#Recherche des VLANs
my $numeroportbridge;
my $vlan_trouve;
my $oid_cisco_vlans = "1.3.6.1.4.1.9.9.46.1.3.1.1.2.1";
my $vlans = SnmpTable->new($hostname, $oid_cisco_vlans, $community);
$vlans->connexion();
my %vl = $vlans->requete();
my @tab = keys(%vl);
foreach my $i (@tab) {
if ($i<1000) {
my $comvlan = $community."@".$i;
print $comvlan."\n";
}
}
printf "Nom de l'interface : %s --> ifindex = %s, Vitesse = %s, Alias = %s\n", $ifname, $ifindex, $vitesse, $ifalias;
好吧,我明白了,但我不知道主机。我想调用我的脚本: - switch ip - community - 接口名称(例如FastEthernet0/9) 我想让他回答:在这个接口上Fa0/9连接到“主机的IP” ,速度:100,双面打印:全... – eouti 2011-04-13 12:09:42
好的。然后找到从接口Fa0/9创建的子网。从该子网生成全部256个IP地址。 Ping所有IP并找到活的IP。然后在我的答案中匹配条件。 – nIKUNJ 2011-04-13 12:15:12
对不起,我犯了一个错误,我不在乎主机的IP,我更喜欢主机的MAC。它更容易吗?谢谢。 – eouti 2011-04-13 12:36:17