
#!/bin/sh
# File	: apache-log-analyze.sh
# By	: Maarten.deBoer@atos.net, 250225
# Subject	: Script to analyze apache/httpd log
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
ASC="${HOME}/log/${PGM}.asc"
HOSTNAME=`hostname | cut -d\. -f1`

INDIR="/var/log/httpd"
MAILTO="maarten.deboer@atos.net"

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "  ASC=${ASC}"
echo "  INDIR=${INDIR}"
echo "  MAILTO=${MAILTO}"
sleep 1

touch ${TMP}
cp /dev/null ${ASC}
ls -1 ${INDIR}/access* | while read FNAME
do
  echo "    FNAME=${FNAME}" |tee -a ${ASC}
# Get IP-address
  cat ${FNAME}|awk '{print $1}'|sort -u >> ${TMP}
done  # FNAME

echo "-----------------------------------------------------" >> ${ASC}
cat ${TMP} |sort -u|while read IP_ADDR
do
  HOSTNAME=`host ${IP_ADDR}|grep pointer|awk '{print $5}'|head -1`
  echo "${IP_ADDR} (${HOSTNAME})" |tee -a ${ASC}

# Get Date+Time (HH:MM)
  ls -1 ${INDIR}/access* | while read FNAME
  do
    cat ${FNAME}|grep "${IP_ADDR}"|cut -d\[ -f2 |cut -d\] -f1|awk -F\: '{print $1" "$2" Hr"}'|sort -u >> ${ASC}
  done  # FNAME

#Get URL
  ls -1 ${INDIR}/access* | while read FNAME
  do
    cat ${FNAME}|grep "${IP_ADDR}"|cut -d\" -f2|sort -u >> ${ASC}
  done  # FNAME

  echo "-----------------------------------------------------" >> ${ASC}
done  # IP_ADDR

if [ -s ${ASC} ] && [ "${MAILTO}" != "" ]; then
  date | mailx -s ":${HOSTNAME}: ${PGM} v${VER}" -a ${ASC} ${MAILTO} 
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
fi  # MAILTO

rm ${TMP} 
echo "`date` ${PGM} v${VER} finished."|tee -a ${LOG}
exit 0

