diff options
Diffstat (limited to 'adei/files/opt/scripts/log.sh')
-rwxr-xr-x | adei/files/opt/scripts/log.sh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/adei/files/opt/scripts/log.sh b/adei/files/opt/scripts/log.sh new file mode 100755 index 0000000..4237682 --- /dev/null +++ b/adei/files/opt/scripts/log.sh @@ -0,0 +1,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 |