Script to ping multiple hosts in parallel

This commit is contained in:
hjp 2008-04-30 11:58:46 +00:00
parent 4ebc2b2a57
commit bbb0b7f6dd
1 changed files with 31 additions and 0 deletions

31
multiping/multiping Executable file
View File

@ -0,0 +1,31 @@
#!/usr/bin/perl
use warnings;
use strict;
use IO::Select;
my $s = IO::Select->new();
my %fh2host;
my $len = 0;
for my $host (@ARGV) {
open(my $fh, '-|', 'ping', $host) or die "cannot exec ping: $!";
$s->add($fh);
$fh2host{$fh} = $host;
$len = length($host) if length($host) > $len;
}
my %state;
for (;;) {
my @ready = $s->can_read(1);
for my $fh (@ready) {
my $msg = <$fh>;
chomp($msg);
my $host = $fh2host{$fh};
$state{$host} = $msg;
}
print "\n\n";
for my $host (@ARGV) {
printf("%-*s : %s\n", $len, $host, $state{$host});
}
}