use Win32::Console; use Net::Ping; use warnings; use strict; my $host="10.20.0.20"; my $p = Net::Ping->new("icmp", 5, 64); $p->hires(); my $count = 0; my $pGood = 0; my $pBad = 0; open (OUTPUTFILE, ">", "C:\\OUTPUT.TXT")or die $!; $| = 1; my $con = Win32::Console->new(STD_OUTPUT_HANDLE); my $highlight = $FG_GREEN | $BG_BLACK; my $normal_color = $con->Attr; $con->Cls(); print "Host: $host\n"; print "Prot: ICMP\n"; print "Timeout: 5\n"; print "Size: 64\n"; print "\n\n"; (my $x, my $y) = $con->Cursor(); until ($count == 1000) { my ($ret, $duration, $ip) = $p->ping($host, 5.5); if ($ret == 1) { my @timeData = localtime(time); my $durationa = 1000 * $duration; $con->WriteChar("$host [ip: $ip] is alive (packet return time:$durationa ms", $x, $y); print OUTPUTFILE "<"; print OUTPUTFILE join(' ', @timeData); print OUTPUTFILE "> "; print OUTPUTFILE "$host [ip: $ip] is alive (packet return time:$durationa ms\n"; $pGood++; my $Goodx = $x; my $Goody = $y + 5; my $Badx = $x + 20; my $Bady = $y + 5; $con->WriteChar("Successful [ $pGood ]", $Goodx, $Goody); $con->WriteChar("Unsuccessful [ $pBad ]", $Badx, $Bady); sleep(1); } else { my @timeData = localtime(time); print OUTPUTFILE "<"; print OUTPUTFILE join(' ', @timeData); print OUTPUTFILE "> "; print OUTPUTFILE "$host [ip: $ip] Dropped.\n"; $con->WriteChar("$host [ip: $ip] Dropped.\n", $x, $y); $pBad++; my $Goodx = $x; my $Goody = $y + 5; my $Badx = $x + 35; my $Bady = $y + 5; $con->WriteChar("Successful [ $pGood ]", $Goodx, $Goody); $con->WriteChar("Unsuccessful [ $pBad ]", $Badx, $Bady); } $count++; }