#!/usr/bin/perl -T use strict; use warnings; use Time::HiRes qw( time ); use POSIX; <>; $|=1; my $expect = 0; while (<>) { unless (/\d+ bytes from ([0-9.]+): icmp_seq=(\d+) ttl=\d+ time=[0-9.]+ ms/) { warn "unrecognized line $_"; next; } my $ip = $1; my $seq = $2; my $time = strftime "%Y-%m-%d %H:%M:%S", localtime; printf "%s %s recovered after losing %d packets\n", $time, $ip, $seq - $expect if $seq - $expect > 2; $expect = $seq + 1; }