From 3b4be290e4f49d593fe6aee8c814d35221a60744 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 5 Jul 2010 12:23:17 +0100 Subject: [PATCH] Script for showing news connections --- incoming-connections | 77 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 incoming-connections diff --git a/incoming-connections b/incoming-connections new file mode 100755 index 0000000..794f181 --- /dev/null +++ b/incoming-connections @@ -0,0 +1,77 @@ +#!/usr/bin/perl -w + +use strict qw(refs vars); +use Parse::Syslog; +use POSIX; + +@ARGV==1 or die; + +our ($site) = @ARGV; + +our @col2num; +our %num2col; + +sub report ($$$) { + my ($ts,$col,$how) = @_; + my $o= ''; + my $n= 0; + foreach (my $i=0; $i<@col2num; $i++) { + if (defined $col2num[$i]) { + $n++; + $o .= $col==$i ? " $how" : " |"; + } else { + $o .= ' '; + } + } + printf "%s %3d %s\n", $ts, $n, $o or die $!; +} + +sub event ($$$;$); +sub event ($$$;$) { + my ($ts, $num, $how, $openclose) = @_; + my $col= $num2col{$num}; + if (!defined $col) { + if ($openclose>0) { + for ($col=0; defined $col2num[$col]; $col++) { } + $num2col{$num}= $col; + $col2num[$col]= $num; + report($ts, $col, $how); + } else { + event($ts, $num, '?', +1); + $col= $num2col{$num}; + report($ts, $col, $how); + } + } else { + report($ts, $col, $how); + } + if ($openclose < 0) { + delete $num2col{$num}; + $col2num[$col]= undef; + } +} + +my $in= new IO::File '<& STDIN'; +my $slp= Parse::Syslog->new($in); +while (my $sl= $slp->next) { + next unless $sl->{program} eq 'innd'; + $_= $sl->{text}; + s/^([^ :]+)// or next; +#print STDERR ">$1<\n"; + next unless $1 eq $site; + + my $timestamp= strftime "%Y-%m-%d %H:%M:%S", localtime $sl->{timestamp}; + +#print STDERR "eventing\n"; + if (m/^\:(\d+) inactive\b/) { + event($timestamp, $1, ':', 0); + } elsif (m/^\:(\d+) checkpoint\b/) { + event($timestamp, $1, 'I', 0); + } elsif (m/^\:(\d+) NCmode\b/) { + event($timestamp, $1, '#', 0); + } elsif (m/^\:(\d+) closed\b/) { + event($timestamp, $1, '^', -1); + } elsif (m/^ connected (\d+)\b/) { + event($timestamp, $1, 'v', +1); + } +#print STDERR "evented\n"; +} -- 2.30.2