Perl检查网络接口是否已启动(linux)

时间:2013-11-01 03:51:34

标签: linux perl interface

每个人,我目前正在使用perl中的脚本来检查某个界面是否已启动。

我在linux中尝试了不同的方法我尝试读取/ proc / net / dev但是在我的if语句中我将它与eth1进行了比较并且它始终表示eth1已经启动,即使它不在/ proc / net中/ dev接口只会在它上面(我有一个usb以太网适配器,甚至没有插入)

目前我走的是便宜的路线。

#!/usr/bin/perl

$cheapway = `ifconfig eth1`;

if($cheapway){
   print "$cheapway";
}

else {
   print "eth1 is down";
}

我的意思是这有效,但感觉就像糟糕的编程习惯。 提前致谢

1 个答案:

答案 0 :(得分:2)

您可以检查Linux中的文件/sys/class/net/<interface>/operstate以确定接口的状态。以下内容适用于eth1:

my $interface = 'eth1';
open(my $fh, '<', "/sys/class/net/$interface/operstate") or die $!;
my $state = <$fh>;
close($fh);
chomp($state);

if ( $state eq 'up' ) {
  print "Interface $interface is up\n";
else {
  print "Interface $interface is down\n";
}