summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2022-10-26 13:15:50 -0700
committerSean Whitton <spwhitton@spwhitton.name>2022-10-31 09:45:53 -0700
commit9291e4bf702dd086172f8e010dac00ab3f370c82 (patch)
treed6e23e612f6868667dd4d263b345260fe400e84a
parentd294e6ac6f285e01dd9691a482b477bae44f661a (diff)
downloaddotfiles-9291e4bf702dd086172f8e010dac00ab3f370c82.tar.gz
add ping_log script
-rwxr-xr-xscripts/network/ping_log31
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/network/ping_log b/scripts/network/ping_log
new file mode 100755
index 00000000..878127b2
--- /dev/null
+++ b/scripts/network/ping_log
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+
+use POSIX;
+use IO::Handle;
+
+@targets = ("4.2.2.2", "8.8.8.8", "10.132.128.1");
+
+open $_, "-|", "ping", $_ for @targets;
+-d or mkdir for "$ENV{HOME}/tmp";
+open LOG, ">>", "$ENV{HOME}/tmp/ping_log.txt";
+LOG->autoflush;
+while (1) {
+ $to_print = "";
+ for (@targets) {
+ $rin = "";
+ vec($rin, fileno $_, 1) = 1;
+ next unless select $rin, undef, undef, 1;
+ $line = readline $_;
+ if ($line =~ /bytes from/ and not $status{$_}) {
+ $status{$_}++;
+ $to_print .= "$_ up, ";
+ } elsif ($line =~ /Unreachable/ and $status{$_}) {
+ $status{$_}--;
+ $to_print .= "$_ down, ";
+ }
+ }
+ next unless length $to_print;
+ $to_print = strftime("%c", localtime) . " " . substr $to_print, 0, -2;
+ print "$to_print\n";
+ print LOG "$to_print\n";
+}