ping check in perl命令不起作用

时间:2014-07-02 22:41:25

标签: perl ping die

因此,我要说一下任意一台因任何原因无法访问或无法访问的主机。

如果我要在终端

中这样做
ping -c 2 DOWNED_HOST_NAME_HERE

我会得到:

ping: unknown host DOWNED_HOST_NAME_HERE 

但是,这行代码并不会导致脚本在需要时死掉。

my $ping_check = `ping -c 2 $host`;


if ($ping_check =~ /ping: unknown host $host/){

    die("Error: Cannot currently access host.");

}

我不能使用Net :: Ping这个脚本,我必须使用基本的perl。这不会导致脚本错误吗?我注意到当我警告$ ping_check时,它输出了一个空字符串。

1 个答案:

答案 0 :(得分:2)

试试这个:

my $ping_check = `ping -c 2 $host 2>&1`;

正在向stderr打印错误消息。你的命令的结果是stdout。 2>&1将stderr 2与stdout 1

组合在一起

我总是使用Net::Ping。它为您提供了更多控制,更便于携带。