#!/usr/bin/perl ########################################################################## # $Id: init,v 1.16 2008/04/30 16:24:12 mike Exp $ ########################################################################## ##################################################### ## 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@logwatch.org. ######################################################### $Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'} || 0; while (defined($ThisLine = )) { if (( $ThisLine =~ /open\(.*\): No such file or directory/) or ( $ThisLine =~ /Id "r" respawning too fast: disabled for 5 minutes/) or ( $ThisLine =~ /Re-reading inittab/)) { # We don't care about these } elsif ( $ThisLine =~ s/Switching to runlevel: (.)\s*$/$1/ ) { # Which runlevel did we change to? chomp ($ThisLine); $RunLevel{$ThisLine}++; } elsif ( $ThisLine =~ s/^Entering runlevel: (.)\s*$/$1/ ) { # Which runlevel did we enter? chomp ($ThisLine); $RunLevel{$ThisLine}++; } elsif ( $ThisLine =~ s/^Trying to re-exec init// ) { # Look for telinit executions chomp ($ThisLine); $ReExecInit++; } elsif ( $ThisLine =~ /(\w+) main process \(\d+\) killed by TERM signal/ ) { $Killed{$1}++; } else { # report any unmatched entries push @OtherList,$ThisLine; } } if ((keys %RunLevel) and ($Detail >= 10)) { foreach $Level (sort keys %RunLevel) { print " Entered or switched to runlevel " . $Level . ": " . $RunLevel{$Level} . " Time(s)\n"; } } if ($ReExecInit and $Detail) { print "\n\nRe-execs of init: $ReExecInit times\n"; } if ((keys %Killed) and ($Detail >= 10)) { foreach $Process (sort keys %Killed) { print " " . $Process . " main process killed by TERM signal : " . $Killed{$Process} . " Time(s)\n"; } } if ($#OtherList >= 0) { print "\n**Unmatched Entries**\n"; print @OtherList; } exit(0); # vi: shiftwidth=3 tabstop=3 syntax=perl et