#!/usr/bin/perl use Term::ANSIColor; if ($ARGV[0] !~ /[a-z0-9\.]+/) { print "Need... Arg...\n"; exit 1; } $dns=$ARGV[0]; my $regex=""; if ($^O == "linux") { $regex=qr/(?[0-9]+ bytes) from (?[a-z\.-]+) \((?[0-9\.]+)\).*seq=(?[0-9]+).*time=(?[0-9\.]+) ms/; $dedjex=qr/no answer yet for icmp_seq=(?[0-9]+)/ } elsif ($^O == "MSWin32") { print "win!\n"; } open(my $PING, "ping -O $dns|") or die "Cannot execute $!"; while (my $line = <$PING>) { if ($line =~ $regex) { if ($+{rms} > 100) {print color("bright_red");} elsif ($+{rms} > 50) {print color("bright_yellow");} printf "% 3s - % 4s ms - %s (%s)\n", $+{rseq}, $+{rms}, $+{rhost}, $+{rip}; if ($+{rms} > 50) {print color("reset");} } elsif ($line =~ $dedjex) { print color("bright_red"); printf "% 3s - no reply %s\n", $+{rseq}, $dns; print color("reset"); } else { print $line; } } close($PING);