东边日出西边雨 发表于 2013-1-26 14:47:17

perl根据ip地址获取mac地址

    有时候需要根据一台主机的ip地址获取其mac地址,这是可以实现的,但这个ip地址必须是同一个以太网内的ip地址。
 
    在perl的模块中Net::ARP可以实现这个功能。但是它的arp_lookup函数只能从本机的arp缓存表中取“被查询ip”的mac,如果恰恰有,能取到,没问题。但是如果arp缓存没有“被查询ip”,那么会得到“unknow”或者“00:00:00:00:00:00”。
 
    解决方法是先ping一下“被查询ip”,然后用arp_lookup函数去arp缓存取其mac。
 
    下面有个例子,是perl写的cgi程序。
 
#!/usr/bin/perluse Net::ARP;print "Content-type:text/html;charset=UTF-8\n\n";read STDIN, my $buffer, $ENV{'CONTENT_LENGTH'};my ($key,$ip)=split /=/,$buffer;                         # 得到了ip地址`ping $ip -c 1`;                                       # 系统调用,ping 被查询ip 1 次my $mac=Net::ARP::arp_lookup("eth0",$ip);                # 从arp缓存中取出macprint $mac;print <<END<form action="$ENV{'SCRIPT_NAME'}" method="post"><input name="ip" /><input type="submit" value="Submit"></from>END; 
页: [1]
查看完整版本: perl根据ip地址获取mac地址