/ / Jak uzyskać odpowiedź z „ping -c 1 example.com”? - perl

Jak uzyskać odpowiedź z "ping -c 1 example.com"? - perl

W BASH mogę pingować serwer w ten sposób

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

i chciałbym zrobić to samo w Perlu, ale jak uzyskać odpowiedź od

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

Pytanie

Jak zrobić to samo w Perlu, ale bez używania jakichkolwiek pakietów Net::Ping?

Odpowiedzi:

4 dla odpowiedzi № 1

Jesteś zainteresowany kodem ping nie wyjście; zapomnij o $response i zbadaj wyjście $?.


1 dla odpowiedzi nr 2

Używam 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