blob: 42376828fce21d87b0d9427450619802ae72d6c7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#! /bin/bash
max_age=10
max_mails=10
log_lines=50
cur=`date +%s`
since=$(($cur - $max_age * 60))
echo "Apache error log"
echo "================"
tail -n $log_lines /var/log/apache2/error_log | perl -MDateTime::Format::Strptime -F';' -ane '
my $parser = DateTime::Format::Strptime->new(
pattern => "%a %b %d %H:%M:%S.%N %Y"
);
my $formater = DateTime::Format::Strptime->new(
pattern => "%s"
);
if (/^\[([^]]+)\]/) {
$last = $formater->format_datetime($parser->parse_datetime($1));
} elsif ($last !~ /\d+/) {
$last = 0;
}
print "$last $_\n";
' | awk "{ if (\$1 > $since) print \$0 }" | cut -d ' ' -f 2-
echo
echo
mails=`mailutil check | cut -d ' ' -f 6`
if [ "$mails" == "in" ]; then
mails=`mailutil check | cut -d ' ' -f 4`
fi
if [ $mails -gt 0 ]; then
[ $mails -gt $max_mails ] && mails=$max_mails
cur=`date -u +%s`
for id in `seq $mails -1 1`; do
mail=$(($mails - $id + 1))
lastmail=`echo "type $mail" | mailx -R "" -N`
dt=`echo "$lastmail" | grep "From" | head -n 1 | cut -d ' ' -f 3-`
last=`date -u --date "$dt" +%s`
since=$((($cur - $last) / 60))
if [ $since -le $max_age ]; then
echo "Cron reports on$dt"
echo "========================================"
echo "$lastmail" | sed -e '1,/^$/d' | head -n 10
echo
echo
fi
done
fi
|