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/perl use 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缓存中取出mac print $mac; print <<END <form action="$ENV{'SCRIPT_NAME'}" method="post"> <input name="ip" /> <input type="submit" value="Submit"> </from> END ;
相关推荐
边城客栈学无止境 2020-07-05
Walter的学习笔记 2020-07-04
A宇 2020-06-14
边城客栈学无止境 2020-06-10
邓博学习笔记 2020-06-03
davidliu00 2020-05-26
ShiShuo 2020-05-16
Aggressivesnail 2020-05-10
ShiShuo 2020-04-26
hanxingwang00 2020-04-22
davidliu00 2020-03-06
ShiShuo 2020-03-06
ShiShuo 2020-03-05
Aggressivesnail 2020-02-28
aaLiweipeng 2020-02-01
amberom 2020-01-16
Walter的学习笔记 2020-01-06