######################################################## # Copyright (c) 2008 Kirk Bauer # Covered under the included MIT/X-Consortium License: # http://www.opensource.org/licenses/mit-license.php # All modifications and contributions by other persons to # this script are assumed to have been donated to the # Logwatch project and thus assume the above copyright # and licensing terms. If you want to make contributions # under your own copyright or a different license this # must be explicitly stated in the contribution an the # Logwatch project reserves the right to not accept such # contributions. If you have made significant # contributions to this script and want to claim # copyright please contact logwatch-devel@lists.sourceforge.net. ######################################################## use strict; sub hostcmp { my ($a,$b) = @_; my ($an) = ($a =~ /(\d*)$/); my $ap = $`; my ($bn) = ($b =~ /(\d*)$/); my $bp = $`; return ($ap cmp $bp) || ($an <=> $bn); } my $TempDir = $ENV{'LOGWATCH_TEMP_DIR'}; my ($line, $host,$tothost); my %hostlist; my $HostFile = ("$TempDir/hostfile"); if (-f $HostFile) { open (TEMPFILE,$HostFile); foreach (<TEMPFILE>) { chomp; $hostlist{$_} = 1; } close (TEMPFILE); } while (defined($line = <STDIN>)) { #Would this miss some hosts? if ($line =~ m/^... .. ..:..:.. (\S*)/io) { $host = $1; $hostlist{$host} = 1 unless defined $hostlist{$host}; } } open (TEMPFILE,">$HostFile") || die $!; foreach $tothost (sort {&hostcmp($a,$b)} keys %hostlist) { chomp $tothost; if (length($tothost) == "0") { } else { print TEMPFILE "$tothost\n"; } } close TEMPFILE; # vi: shiftwidth=3 syntax=perl tabstop=3 et # Local Variables: # mode: perl # perl-indent-level: 3 # indent-tabs-mode: nil # End: