因此,我要说一下任意一台因任何原因无法访问或无法访问的主机。
如果我要在终端
中这样做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时,它输出了一个空字符串。
答案 0 :(得分:2)
试试这个:
my $ping_check = `ping -c 2 $host 2>&1`;
正在向stderr打印错误消息。你的命令的结果是stdout。
2>&1
将stderr 2
与stdout 1
我总是使用Net::Ping
。它为您提供了更多控制,更便于携带。