summaryrefslogtreecommitdiffstats
path: root/adei/files/opt/scripts/log.sh
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