Ping with timestamps

Sometimes it is handy to run ping on the background to monitor network connectivity. Combine Microsoft PowerShell and the PsPing utility from Microsoft and you get a nice logging solution with shows on each line a timestamp and the results from the ping.

Ordinary ping:

psping -t -i 10 server1.example.org |Foreach{"{0} - {1}" -f (Get-Date),$_} | Tee-object -FilePath ping_log.txt

TCP port ping:

psping -t -i 10 server1.example.org:80 |Foreach{"{0} - {1}" -f (Get-Date),$_} | Tee-object -FilePath port_log.txt

Explanations:

  • -t parameter means run until stopped
  • -i 10 means ping every 10 seconds
  • PowerShell foreach loops through the results add timestamp to each line
  • PowerShell Tee-object is like Unix tee command which both saves the input and sends it to stdout

Credits for the Foreach ping solution: http://stackoverflow.com/a/40591307/350615