Как получить ответ от "ping -c 1 example.com"? - PullRequest
4 голосов
/ 04 ноября 2011

В BASH я могу пинговать сервер примерно так

for i in $MY_SERVER_LIST; do
   if ping -c 1 $i > /dev/null 2>&1; then
      # $i is alive
   fi
done

, и я хотел бы сделать то же самое в Perl, но как мне получить ответ от

my $response = `ping -c 1 google.com > /dev/null 2>&1`

Вопрос

Как мне сделать то же самое в Perl, но без использования таких пакетов, как Net::Ping?

Ответы [ 2 ]

4 голосов
/ 04 ноября 2011

Вас интересует код выхода ping, а не выход; забудьте о $response и изучите код выхода в $?.

1 голос
/ 11 ноября 2011

Я бы использовал Net :: Ping!

use Net::Ping;
$p = Net::Ping->new();
print "$host is alive.\n" if $p->ping($host);
$p->close();
$p = Net::Ping->new("icmp");
$p->bind($my_addr); # Specify source interface of pings
foreach $host (@host_array)
{
print "$host is ";
print "NOT " unless $p->ping($host, 2);
print "reachable.\n";
sleep(1);
}
$p->close();

http://perldoc.perl.org/Net/Ping.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...