#!/bin/bash # Written by: Seth Mos - 4 April 2003 # Contact: seth at iserv dot nl # This code falls under the GPL v2 but I can't find the license right now. # Somebody should rewrite this in perl or teach me how to do it ;) # This code uses bash,sed,echo,date,mysql,awk # The code relies on the ouput from Hylafax 4.1 with the faxqueue-output.patch # or 4.1beta3 with the faxqueueoutput.patch and faxsend-error-output.patch # See http://iserv.nl/files/hylafax/ for the patches or patched srpms # Reset taal voorkeur. #LANG= #export LANG LANG=nl_NL@Euro LANGUAGE=nl_NL@Euro export LANG=nl_NL@Euro export LANG=nl_NL@Euro . config cd "$WORKDIR" if [ -z "$1" ];then echo "Usage: `basename $0` " echo "Where is the syslog file containing the hylafax logging" echo "Example: `basename $0` /var/log/messages" exit 0 elif [ ! -f "$1" ];then echo "That is not a logfile" exit 0 fi LOGFILE="$1" FILTER_DATE="`date '+%b %e'`" # Syslog does not log a year and thus we set it here. Read note about FAXLOG below! YEAR="`date '+%Y'`" #FAXLOG=`grep JOB $LOGFILE|awk -F: '{print $4 $5}'|grep " "|sed 's/ /:/g'` #echo $FILTER_DATE FAXLOG=`grep -i "$FILTER_DATE" $LOGFILE|grep "SUBMIT JOB"|sed 's/ /:/g'` #FAXLOG=`grep -i "$FILTER_DATE" $LOGFILE|grep JOB |awk -F: '{print $4 $5}'` #FAXLOG=`grep -i "Apr 4" $LOGFILE|grep JOB |awk -F: '{print $4 $5}'|grep " "|sed 's/ /:/g'` get_fax_log_jobs() { # This one can be used for inserting previous days which are in the logfile. # Note that this one can produce weird results when the YEAR wraps in the logfile. #grep "SUBMIT JOB"|awk -F" " '{print $NF}' #By default we just update reports which are sent on the same day. grep -i "$FILTER_DATE" $LOGFILE|grep "SUBMIT JOB"|awk -F" " '{print $NF}' } search_and_destroy() { for JOB_ID in `get_fax_log_jobs`;do for LOG_EVENT in `grep -F "JOB $JOB_ID" $LOGFILE|sed 's/ /:/g'`;do #echo "$LOG_EVENT" parse_log_event done done } parse_log_event() { unset STATUS FAX_EVENT FAX_SENT FAX_SUCCESS ERR_CODE TX_TIJD TX_DATE PHONE FAX_EVENT="`echo $LOG_EVENT|awk -F":" '{print $10}'`" FAX_SENT="`echo $LOG_EVENT|awk -F":" '{print $11}'`" FAX_SUCCESS="`echo $LOG_EVENT|awk -F":" '{print $15}'`" TX_TIME=`echo $LOG_EVENT|awk -F":" '{print $4 ":" $5 ":" $6}'` TX_DATE="$YEAR.`echo $LOG_EVENT|sed -f month.sed|awk -F":" '{print $1 "." $3}'`" if [ "$FAX_EVENT" = "SUBMIT" ];then #echo Submit STATUS=0 echo "DELETE FROM $DB_TABLE WHERE fax_id=$JOB_ID;" echo "INSERT INTO $DB_TABLE VALUES \ ('',$JOB_ID,'$RECIPIENT','$ACTIVE','$STATUS','','','$TX_TIME', \ '$TX_DATE','','');" elif [ "$FAX_EVENT" = "KILL" ];then #echo Kill STATUS=3 echo "UPDATE $DB_TABLE SET \ status=$STATUS,err_code='$ERR_CODE',tx_time='$TX_TIME',tx_date='$TX_DATE' \ WHERE fax_id=$JOB_ID;" elif [ "$FAX_EVENT" = "SEND" ] && [ "$FAX_SUCCESS" = "SENT" ];then #echo Sent STATUS=1 echo "UPDATE $DB_TABLE SET \ status=$STATUS,err_code='$ERR_CODE',tx_time='$TX_TIME',tx_date='$TX_DATE' \ WHERE fax_id=$JOB_ID;" elif [ "$FAX_EVENT" = "SEND" ] && [ "$FAX_SENT" = "FAX" ];then #echo Sent STATUS=1 PHONE=`echo $LOG_EVENT|awk -F":" '{print $16}'` RECIPIENT=`grep [a-z]:$PHONE $RECIPIENTFILE|cut -d":" -f1` ACTIVE=`grep [a-z]:$PHONE $RECIPIENTFILE|cut -d":" -f4` if [ -z "$RECIPIENT" ];then RECIPIENT=$PHONE fi echo "UPDATE $DB_TABLE SET \ status=$STATUS,err_code='$ERR_CODE',tx_time='$TX_TIME',tx_date='$TX_DATE', \ fax_number='$PHONE',recipient='$RECIPIENT',active='$ACTIVE' \ WHERE fax_id=$JOB_ID;" elif [ "$FAX_EVENT" = "SEND" ] && [ "$FAX_SENT" = "FAILED" ];then #echo Failed STATUS=2 if [ "`echo $LOG_EVENT|awk -F":" '{print $17}'`" = "ERR" ];then ERR_CODE=`echo $LOG_EVENT|cut -f18- -d:|sed 's/:/ /g'` fi echo "UPDATE $DB_TABLE SET \ status=$STATUS,err_code='$ERR_CODE',tx_time='$TX_TIME',tx_date='$TX_DATE' \ WHERE fax_id=$JOB_ID;" fi } search_and_destroy|mysql -u $DB_USER --password=$DB_PASSWD -h $DB_HOST $DB_DB