Perl取得Linux系统的网络接口模块-IO::Interface::Simple
IO::Interface::Simple - Perl extension for access to network card configuration information.在linux下,可以通过'ifconfig'或'ip'指令来取得本机下的网络接口卡的信息,在perl中想取得网口信息,只有通过调用系统指令取得后通过正则表达式的取得某一些信息。这种做法显得比较业余,这里推荐一个第三方的模块,用它来取得系统中的网络接口卡的运行信息。
使用示例说明:
use IO::Interface::Simple;
#取得'eth0'网口
my $if1 = IO::Interface::Simple->new('eth0');
#取得ip为'127.0.0.1'的网口
my $if2 = IO::Interface::Simple->new_from_address('127.0.0.1');
#取得索引编号为第一块网卡的
my $if3 = IO::Interface::Simple->new_from_index(1);
#如果没有传入指定的网口信息,默认将取得本机所有的网口(包括vpn拨号的口)
my @interfaces = IO::Interface::Simple->interfaces;
for my $if (@interfaces){
print "interface = $if\n";
print "addr = ",$if->address,"\n",
"broadcast = ",$if->broadcast,"\n",
"netmask = ",$if->netmask,"\n",
"dstaddr = ",$if->dstaddr,"\n",
"hwaddr = ",$if->hwaddr,"\n",
"mtu = ",$if->mtu,"\n",
"metric = ",$if->metric,"\n",
"index = ",$if->index,"\n";
print "is running\n" if $if->is_running;
print "is broadcast\n" if $if->is_broadcast;
print "is p-to-p\n" if $if->is_pt2pt;
print "is loopback\n" if $if->is_loopback;
print "is promiscuous\n" if $if->is_promiscuous;
print "is multicast\n" if $if->is_multicast;
print "is notrailers\n" if $if->is_notrailers;
print "is noarp\n" if $if->is_noarp;
}
API说明:
$if->address:ip地址
$if->broadcast:广播地址
$if->netmask:子网掩码
$if->dstaddr:跟ip地址相似
$if->hwaddr:硬件即mac地址
$if->mtu:最大传输单元
$if->metric:路由度量值
$if->index:索引编号
$if->is_running:该接口是否激活
$if->is_broadcast:是否为广播地址
$if->is_pt2pt:是否为vpn拨号后产生的
$if->is_loopback:是否为本机圆环地址
$if->is_promiscuous:是否处在混杂模式
$if->is_multicast:是否支持多播
if->is_notrailers:
$if->is_noarp:是否已经关闭了arp响应
最新版本:1.0
项目主页:https://metacpan.org/release/IO-Interface