%PDF- %PDF-
Direktori : /opt/PFLogSumm-HTML-GUI/ |
Current File : //opt/PFLogSumm-HTML-GUI/pfstats.sh |
#!/usr/bin/env bash # Debug option - should be disabled unless required #set -x #Get Command Line Parameters for the custom date e.g. -d "Nov 03" POSITIONAL=() while [[ $# -gt 0 ]] do key="$1" case $key in -d|--date) CUSTOMDATE="$2" shift # past argument shift # past value ;; -l|--logfile) CUSTOMLOG="$2" shift # past argument shift # past value ;; -m|--month) CUSTOMMONTH="$2" shift # past argument shift # past value ;; *) # unknown option POSITIONAL+=("$1") # save it in an array for later shift # past argument ;; esac done set -- "${POSITIONAL[@]}" # restore positional parameters #Select Temporal if [[ -z "${CUSTOMMONTH}" ]]; then #If custom date is not set - default to current date e.g. 'Dec 9' if [[ -z "${CUSTOMDATE}" ]]; then LOGDATE=$(date +'%b %e') else LOGDATE=$CUSTOMDATE fi else LOGDATE=$( echo ${CUSTOMMONTH} | sed 's/.*/\L&/; s/[a-z]*/\u&/g') fi #Custom Log file(s) if [[ -z "${CUSTOMLOG}" ]]; then LOGFILELOCATION="/var/log/maillog" else LOGFILELOCATION=${CUSTOMLOG} fi #Test for a valid log file if ! ls $LOGFILELOCATION 1> /dev/null 2>&1; then echo "Not a valid log file"; exit 1ß fi #Temporal Values REPORTDATE=$(date '+%Y-%m-%d %H:%M:%S') CURRENTYEAR=$(date +'%Y') CURRENTMONTH=$(date +'%b') CURRENTDAY=$(date +'%e') #Get Counts Sent=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c 'postfix/smtp.*status=sent' ) Dfr=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c 'postfix/smtp.*status=deferred' ) Bnc=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c 'postfix/smtp.*status=bounce' ) RelayAccDnd=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c 'postfix/smtp.*Relay access denied' ) EnvelopeBlocked=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c -E '*550.*Envelope blocked' ) greylist=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c 'postfix/smtp.*[Gg]reylist' ) Received=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c 'postfix/smtpd.*client=' ) Rejected=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c -oP 'rejected: \K.*' ) SpamCount=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c 'status=sent.*spam' ) MailVirus=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c -i 'infected' ) PREGREET=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep 'postfix/postscreen' | grep -c 'PREGREET' ) CONNECT=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep 'postfix/postscreen' | grep -c 'CONNECT' ) DISCONNECT=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep 'postfix/postscreen' | grep -c 'DISCONNECT' ) HANGUP=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep 'postfix/postscreen' | grep -c 'HANGUP' ) DNSBL=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep 'postfix/postscreen' | grep -c 'DNSBL' ) AccountLogins=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c 'postfix/.*sasl_username' ) warning=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c -i 'warning' ) error=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c -i 'error' ) fatal=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c -i 'fatal' ) panic=$( grep "$LOGDATE" $LOGFILELOCATION 2>/dev/null | grep -c -i 'panic' ) echo "Report Run : $REPORTDATE" echo "Log Date Extract : $LOGDATE" echo '-------------------------------------------' echo "Total Messages Delivered : $Sent" echo "Total Messages Deferred : $Dfr" echo "Total Messages Bounced : $Bnc" echo "Total Messages Rejected : $Rejected" echo "Total Messages Received : $Received" echo "Total Relay Access Denied : $RelayAccDnd" echo "Total Greylisted : $greylist" echo "Total Virus : $MailVirus" echo "Total Spam : $SpamCount" echo "Envelope Blocked (550) : $EnvelopeBlocked" echo "SASL Account Logins : $AccountLogins" echo "Total postscreen PREGREETS : $PREGREET" echo "Total postscreen CONNECT : $CONNECT" echo "Total postscreen DISCONNECT : $DISCONNECT" echo "Total postscreen HANGUP : $HANGUP" echo "Total postscreen DNSBL : $DNSBL" echo "Postfix Warnings : $warning" echo "Postfix Errors : $error" echo "Postfix Fatal : $fatal" echo "Postfix Panic : $panic" echo exit 0 #if ($l =~ m/status=bounced/i) {$rBnc++;} if ($l =~ m/postfix\/pickup/i) { if ($l =~ m/uid=|sender=/) {$rRcv++;} } if ($l =~ m/client=/i) {$rRcv++;} if ($l =~ m/reject:/i) {$rRjc++;} if ($l =~ m/hold:/i) {$rHld++;} if ($l =~ m/discard:/i) {$rDsc++;} } #print "Message.Delivered: Total delivered messages: $rDlv\n"; #print "Statistic.Delivered: $rDlv\n"; print "Message.Forwarded: Total forwarded messages: $rFwd\n"; print "Statistic.Forwarded: $rFwd\n"; print "Message.Rejected: Total rejected messages: $rRjc\n"; print "Statistic.Rejected: $rRjc\n"; print "Message.Received: Total received messages: $rRcv\n"; print "Statistic.Received: $rRcv\n"; print "Message.Discarded: Total discarded messages: $rDsc\n"; print "Statistic.Discarded: $rDsc\n"; #print "Message.Deferred: Total deferred messages: $rDfr\n"; #print "Statistic.Deferred: $rDfr\n"; print "Message.Bounced: Total bounced messages: $rBnc\n"; print "Statistic.Bounced: $rBnc\n"; print "Message.Held: Total held messages: $rHld\n"; print "Statistic.Held: $rHld\n";