|
@@ -20,11 +20,19 @@ |
20 |
20 |
|
require 'logcheck.conf'; |
21 |
21 |
|
$mode="run"; |
22 |
22 |
|
|
|
23 |
+ |
use File::Basename; |
|
24 |
+ |
use File::Spec; |
|
25 |
+ |
$dirname = File::Spec->rel2abs(dirname(__FILE__)); |
|
26 |
+ |
|
|
27 |
+ |
$file_pidfile = $dirname."/logcheck.pid"; |
|
28 |
+ |
|
|
29 |
+ |
$file_whitelist = $dirname."/".$file_whitelist; |
|
30 |
+ |
$file_logfilelist = $dirname."/".$file_logfilelist; |
23 |
31 |
|
|
24 |
32 |
|
sub head() { |
25 |
33 |
|
print "\n"; |
26 |
34 |
|
print "-----------------------------\n"; |
27 |
|
- |
print "This is logcheck.pl V1.0.4\n"; |
|
35 |
+ |
print "This is logcheck.pl V1.0.5\n"; |
28 |
36 |
|
print "https://peters-webcorner.de\n"; |
29 |
37 |
|
print "project hosted on github\n"; |
30 |
38 |
|
print "https://github.com/pstimpel/logcheck\n\n"; |
|
@@ -35,12 +43,21 @@ |
35 |
43 |
|
print "-----------------------------\n\n"; |
36 |
44 |
|
} |
37 |
45 |
|
|
38 |
|
- |
if (($ARGV[0] ne "") && ($ARGV[0] ne "debug") && ($ARGV[0] ne "-l")) { |
|
46 |
+ |
if (($ARGV[0] ne "") && ($ARGV[0] ne "debug") && ($ARGV[0] ne "-l") && ($ARGV[0] ne "-r") && ($ARGV[0] ne "-d")) { |
39 |
47 |
|
head(); |
40 |
48 |
|
print "Parameters:\n"; |
41 |
49 |
|
print "logcheck.pl normal run, parse logfiles and fire email if needed\n"; |
42 |
50 |
|
print "logcheck.pl debug prevents script from sending mail\n"; |
|
51 |
+ |
print "logcheck.pl -d prevents script from sending mail\n"; |
43 |
52 |
|
print "logcheck.pl -l prints license to console\n"; |
|
53 |
+ |
print "logcheck.pl -p removes existing pid-file with no further checks\n"; |
|
54 |
+ |
print "logcheck.pl -h this screen\n"; |
|
55 |
+ |
print "PID: ".$$." \n"; |
|
56 |
+ |
print "DIR: ".$dirname."\n"; |
|
57 |
+ |
getpidfilecontent(); |
|
58 |
+ |
if($pidstring ne "unknown") { |
|
59 |
+ |
print "!!! PID-file existing, created by process ".$pidstring." !!!\n"; |
|
60 |
+ |
} |
44 |
61 |
|
exit 0; |
45 |
62 |
|
|
46 |
63 |
|
} |
|
@@ -52,7 +69,14 @@ |
52 |
69 |
|
exit 0; |
53 |
70 |
|
} |
54 |
71 |
|
|
55 |
|
- |
if ($ARGV[0] eq "debug") { |
|
72 |
+ |
if ($ARGV[0] eq "-r") { |
|
73 |
+ |
head(); |
|
74 |
+ |
unlink($file_pidfile); |
|
75 |
+ |
print "done...\n"; |
|
76 |
+ |
exit 0; |
|
77 |
+ |
} |
|
78 |
+ |
|
|
79 |
+ |
if ($ARGV[0] eq "debug" || $ARGV[0] eq "-d") { |
56 |
80 |
|
head(); |
57 |
81 |
|
print "debug mode on...\n"; |
58 |
82 |
|
$mode="debug"; |
|
@@ -141,6 +165,34 @@ |
141 |
165 |
|
exit 1; |
142 |
166 |
|
} |
143 |
167 |
|
|
|
168 |
+ |
if (-e $file_pidfile) { |
|
169 |
+ |
if($mode eq "debug") { |
|
170 |
+ |
print "There is a pid-file already, ".$file_pidfile.", abort execution\n"; |
|
171 |
+ |
exit 1; |
|
172 |
+ |
} else { |
|
173 |
+ |
getpidfilecontent(); |
|
174 |
+ |
$psstring = `ps fax`; |
|
175 |
+ |
$Jetztwert = time(); |
|
176 |
+ |
$Jetztzeit = localtime($Jetztwert); |
|
177 |
+ |
$mailer = '/usr/sbin/sendmail'; |
|
178 |
+ |
$Sender = $senderaddress; |
|
179 |
+ |
open(MAIL, "|$mailer -t") || die "Can't open $mailer!\n"; |
|
180 |
+ |
print MAIL "To: ".$emailaddress."\n"; |
|
181 |
+ |
print MAIL "Subject: Logs NOT CHECKED report $Jetztzeit\n\n\n"; |
|
182 |
+ |
print MAIL "There is a pid-file already at ".$file_pidfile.", and the execution of logcheck was aborted!\n\nRemove the pid-file, but make sure logcheck is not running anymore. See output of ps fax below\n\n"; |
|
183 |
+ |
print MAIL "Pid of this (the aborted process) is: ".$$."\n"; |
|
184 |
+ |
print MAIL "Pid of blocking process is: ".$pidstring."\n\n"; |
|
185 |
+ |
|
|
186 |
+ |
print MAIL $psstring."\n\n"; |
|
187 |
+ |
close(MAIL); |
|
188 |
+ |
exit 1; |
|
189 |
+ |
} |
|
190 |
+ |
} |
|
191 |
+ |
|
|
192 |
+ |
open(ADR, ">$file_pidfile"); |
|
193 |
+ |
print ADR $$; |
|
194 |
+ |
close(ADR); |
|
195 |
+ |
|
144 |
196 |
|
|
145 |
197 |
|
foreach $thisfile (@logfiles) { |
146 |
198 |
|
$outtext=""; |
|
@@ -218,6 +270,9 @@ |
218 |
270 |
|
print STDERR "logfile $thisfile not found...ignoring\n"; |
219 |
271 |
|
} |
220 |
272 |
|
} |
|
273 |
+ |
|
|
274 |
+ |
unlink($file_pidfile); |
|
275 |
+ |
|
221 |
276 |
|
exit 0; |
222 |
277 |
|
|
223 |
278 |
|
|
|
@@ -251,4 +306,18 @@ |
251 |
306 |
|
close(LOG); |
252 |
307 |
|
} |
253 |
308 |
|
|
254 |
|
- |
|
|
309 |
+ |
sub getpidfilecontent() { |
|
310 |
+ |
$pidstring="unknown"; |
|
311 |
+ |
open(ADR, "<$file_pidfile"); |
|
312 |
+ |
while(<ADR>) |
|
313 |
+ |
{ |
|
314 |
+ |
chop($_); |
|
315 |
+ |
if(length($_) > 1) { |
|
316 |
+ |
if (substr($_,0,1) ne "#") |
|
317 |
+ |
{ |
|
318 |
+ |
$pidstring = $_; |
|
319 |
+ |
} |
|
320 |
+ |
} |
|
321 |
+ |
} |
|
322 |
+ |
close(ADR); |
|
323 |
+ |
} |