| Newsgroups |
gmane.comp.log.logwatch.devel |
| Message-ID |
<[email protected]> |
Revision: 128
http://logwatch.svn.sourceforge.net/logwatch/?rev=128&view=rev
Author: stefjakobs
Date: 2013-01-10 10:25:25 +0000 (Thu, 10 Jan 2013)
Log Message:
-----------
major rewrite of the puppet scanner to generically handle many
message types (Thanks: Orion Poplawski).
Modified Paths:
--------------
conf/services/openvpn.conf
scripts/services/puppet
Modified: conf/services/openvpn.conf
===================================================================
--- conf/services/openvpn.conf 2013-01-02 21:39:00 UTC (rev 127)
+++ conf/services/openvpn.conf 2013-01-10 10:25:25 UTC (rev 128)
@@ -17,7 +17,7 @@
# Which logfile group...
LogFile = messages
-# Only give lines pertaining to ntpd...
+# Only give lines pertaining to openvpn
*OnlyService = openvpn
*RemoveHeaders =
Modified: scripts/services/puppet
===================================================================
--- scripts/services/puppet 2013-01-02 21:39:00 UTC (rev 127)
+++ scripts/services/puppet 2013-01-10 10:25:25 UTC (rev 128)
@@ -51,35 +51,30 @@
($ThisLine =~ /Applying configuration version/) or
($ThisLine =~ /Loading facts in/) or
($ThisLine =~ /Retrieving plugin/) or
- ($ThisLine =~ /FileBucket adding/)
+ ($ThisLine =~ /FileBucket adding/) or
+ ($ThisLine =~ /^Caching certificate/) or
+ ($ThisLine =~ /^Certificate Request fingerprint/) or
+ ($ThisLine =~ /^Creating state file/)
) {
# Ignore
- } elsif (($reason) = ($ThisLine =~ /Could not retrieve catalog from remote server: (.*)/)) {
+ } elsif (($junk, $failure, $reason) = ($ThisLine =~ /^(\(.*\) |)Could not ([^:]*): (.*)/)) {
if ($reason == "getaddrinfo: Name or service not known" && $offline) {
$FailedRuns--;
} else {
- $CatalogFailures{$reason}++;
+ $Failures{$failure}->{$reason}++;
}
} elsif ($ThisLine =~ /Finished catalog run in [0-9]+\.[0-9]+ seconds/) {
$SuccessfulRuns++;
} elsif ($ThisLine =~ /skipping run/) {
$FailedRuns++;
- } elsif ($ThisLine =~ /File\[(.+)\].+checksum changed/) {
- $ChangedFiles{$1}++;
- } elsif ($ThisLine =~ /File\[(.+)\].+content changed/) {
- $ChangedFiles{$1}++;
- } elsif (($File, $Content) = $ThisLine =~ /\(\/File\[(.+)\]\/content\) #012(.*)/) {
- $Content =~ s/#011/\t/g;
- $Content =~ s/#012/\n /g;
- $ChangedFilesContent{$File} .= $Content;
- } elsif ($ThisLine =~ /File\[(.+)\].+created/) {
- $CreatedFiles{$1}++;
- } elsif ($ThisLine =~ /File\[(.+)\].+defined content/) {
- $CreatedFiles{$1}++;
- } elsif ($ThisLine =~ /File\[(.+)\].+removed/) {
- $RemovedFiles{$1}++;
+ } elsif ($ThisLine =~ /(Did not receive certificate)/) {
+ $Errors{$1}++;
+ } elsif (($file) = $ThisLine =~ /Reparsing (.*)/) {
+ $Reparsed{$file}++;
} elsif (($fileinfo) = ($ThisLine =~ /Filebucketed (.*)/)) {
$FileBucketed{$1}++;
+ } elsif ($ThisLine =~ /Dependency .+\[.+\] has ([0-9]+ |)failure/) {
+ $DependencyFailures++;
} elsif (
($ThisLine =~ /Failed to retrieve current state of resource/) or
($ThisLine =~ /Package.+ensure.+Could not find package/) or
@@ -97,16 +92,42 @@
$ExecRuns{$1}++;
} elsif ($ThisLine =~ /Exec\[(.+)\].+Trigger(?:ing|ed) 'refresh' from [0-9]+ (?:dependencies|events)/) {
$ExecRuns{$1}++;
+ } elsif ($ThisLine =~ /Exec\[(.+)\].+Triggered 'refresh' from [0-9]+ events/) {
+ $ExecRuns{$1}++;
} elsif ($ThisLine =~ /Service\[(.+)\].+ensure changed \'.+\' to \'running\'/) {
$ServiceStarts{$1}++;
} elsif ($ThisLine =~ /Service\[(.+)\].+Trigger(?:ing|ed) 'refresh' from [0-9]+ (?:dependencies|events)/) {
$ServiceStarts{$1}++;
+ } elsif ($ThisLine =~ /Service\[(.+)\].+Triggered 'refresh' from [0-9]+ events/) {
+ $ServiceStarts{$1}++;
} elsif ($ThisLine =~ /Service\[(.+)\].+ensure changed \'.+\' to \'stopped\'/) {
$ServiceStops{$1}++;
} elsif ($ThisLine =~ /User\[(.+)\].+changed password/) {
$PasswordChanged{$1}++;
- } elsif ($ThisLine =~ /Dependency .+\[.+\] has [0-9]+ failure/) {
- $DependencyFailures++;
+
+ # Generic rules need to be last
+ } elsif (($type, $name, $attr) = $ThisLine =~ /([^\/]+)\[([^\]]+)\]\/([^\/]+)\) (created|defined content)/) {
+ $Created{$type}->{$name}++;
+ } elsif (($type, $name, $attr) = $ThisLine =~ /([^\/]+)\[([^\]]+)\]\/([^\/]+)\) removed/) {
+ $Removed{$type}->{$name}++;
+ } elsif (($type, $name, $attr, $from, $to) = $ThisLine =~ /([^\/]+)\[([^\]]+)\]\/([^\/]+)\) .+ changed '(.*)' to '(.*)/) {
+ if ($attr eq 'content' or $attr eq 'checksum') {
+ # Only count these types of changes
+ $Changed{$type}->{$name}->{$attr}++;
+ } else {
+ # Get details for all other types of changes
+ $Changed{$type}->{$name}->{$attr}->{'from'} = $from;
+ $Changed{$type}->{$name}->{$attr}->{'to'} = $to;
+ }
+ } elsif (($type, $name, $attr, $from) = $ThisLine =~ /([^\/]+)\[([^\]]+)\]\/([^\/]+)\) undefined '.+' from '(.*)'/) {
+ $Changed{$type}->{$name}->{$attr}->{'from'} = $from;
+ $Changed{$type}->{$name}->{$attr}->{'to'} = 'undefined';
+ } elsif (($type, $name, $content) = $ThisLine =~ /([^\/]+)\[([^\]]+)\]\/content\) (.*)/) {
+ $content =~ s/#011/\t/g;
+ $content =~ s/#012/\n /g;
+ $Changed{$type}->{$name}->{'contents'} .= $content;
+ } elsif (($source, $target) = $ThisLine =~ /^\(\/(.*)\) Scheduling refresh of (.*)/) {
+ $ScheduledRefresh{"$source -> $target"}++;
} else {
# Report any unmatched entries...
$OtherList{$ThisLine}++;
@@ -123,34 +144,32 @@
print "\nFailed runs: $FailedRuns\n";
}
-if (keys %CatalogFailures) {
- print "\nCould not retrieve catalog from remote server:\n";
- foreach $ThisOne (keys %CatalogFailures) {
- print " $ThisOne: $CatalogFailures{$ThisOne} Time(s)\n";
+if (keys %Errors) {
+ print "\nERRORS:\n";
+ foreach $ThisOne (keys %Errors) {
+ print " $ThisOne: $Errors{$ThisOne} Time(s)\n";
}
}
-if (keys %CreatedFiles) {
- print "\nCreated files:\n";
- foreach $ThisOne (keys %CreatedFiles) {
- print " $ThisOne: $CreatedFiles{$ThisOne} Time(s)\n";
+foreach $failure (sort(keys %Failures)) {
+ print "\nERROR: Could not $failure:\n";
+ foreach $ThisOne (keys %{$Failures{$failure}}) {
+ print " $ThisOne: $Failures{$failure}->{$ThisOne} Time(s)\n";
}
}
-if (keys %ChangedFiles) {
- print "\nChanged files:\n";
- foreach $ThisOne (keys %ChangedFiles) {
- print " $ThisOne: $ChangedFiles{$ThisOne} Time(s)\n";
- if (defined($ChangedFilesContent{$ThisOne}) and $Detail >= 3) {
- print " $ChangedFilesContent{$ThisOne}\n";
- }
- }
+if ($ResourceFailures > 0) {
+ print "\nResource failures: $ResourceFailures\n";
}
-if (keys %RemovedFiles) {
- print "\nRemoved files:\n";
- foreach $ThisOne (keys %RemovedFiles) {
- print " $ThisOne: $RemovedFiles{$ThisOne} Time(s)\n";
+if ($DependencyFailures > 0) {
+ print "\nDependency failures: $DependencyFailures\n";
+}
+
+if (keys %Reparsed) {
+ print "\nReparsed:\n";
+ foreach $ThisOne (keys %Reparsed) {
+ print " $ThisOne: $Reparsed{$ThisOne} Time(s)\n";
}
}
@@ -210,14 +229,49 @@
}
}
-if ($ResourceFailures > 0) {
- print "\nResource failures: $ResourceFailures\n";
+foreach $Type (sort(keys %Created)) {
+ print "\n$Type created:\n";
+ foreach $Name (sort(keys %{$Created{$Type}})) {
+ print " $Name: $Created{$Type}->{$Name} Time(s)\n";
+ }
}
-if ($DependencyFailures > 0) {
- print "\nDependency failures: $DependencyFailures\n";
+foreach $Type (sort(keys %Changed)) {
+ print "\n$Type changed:\n";
+ foreach $Name (sort(keys %{$Changed{$Type}})) {
+ print " $Name:\n";
+ foreach $Attr (sort(keys %{$Changed{$Type}->{$Name}})) {
+ if ($Attr eq 'contents') {
+ if ($Detail >= 3) {
+ print " $Attr:";
+ print "$Changed{$Type}->{$Name}->{$Attr}\n";
+ }
+ } else {
+ print " $Attr: ";
+ if (defined($Changed{$Type}->{$Name}->{$Attr}->{'from'})) {
+ print "from '$Changed{$Type}->{$Name}->{$Attr}->{from}' to '$Changed{$Type}->{$Name}->{$Attr}->{to}'\n";
+ } else {
+ print "$Changed{$Type}->{$Name}->{$Attr} Time(s)\n";
+ }
+ }
+ }
+ }
}
+foreach $Type (sort(keys %Removed)) {
+ print "\n$Type removed:\n";
+ foreach $Name (sort(keys %{$Removed{$Type}})) {
+ print " $Name: $Removed{$Type}->{$Name} Time(s)\n";
+ }
+}
+
+if (keys %ScheduledRefresh) {
+ print "\nScheduled refresh:\n";
+ foreach $ThisOne (keys %ScheduledRefresh) {
+ print " $ThisOne: $ScheduledRefresh{$ThisOne} Time(s)\n";
+ }
+}
+
if (keys %OtherList) {
print "\n**Unmatched Entries**\n";
foreach $ThisOne (keys %OtherList) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712