爲了我的實習,我必須編碼網絡主管。我正在寫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