每个人,我目前正在使用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";
}
我的意思是这有效,但感觉就像糟糕的编程习惯。 提前致谢
答案 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";
}