0

大家,我目前正在用 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";
}

我的意思是这行得通,但感觉像是糟糕的编程习惯。提前致谢

4

1 回答 1

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";
}
于 2013-11-01T04:26:37.583 回答