日志格式如下:
 
  1. log_format  iptables   '"$remote_addr" "$time_local" "$request_uri" "$http_user_agent" "$http_referer"'; 
"218.22.202.130"  "12/Jun/2012:17:20:34 +0800"    "/chanke/19/19060321.htm"      "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Tride  nt/5.0)"  "http://www.baidu.com/s?word=%BF"
第一列是访问ip   第二列是访问时间   第三列uri,第四列是user-agent,第五列是referer 

 

  1. #!/bin/bash 
  2.   
  3.     if [ $# -eq 0 ]; then 
  4.         echo "Error: please specify logfile." 
  5.         exit 0 
  6.     else 
  7.         LOG=$1 
  8.     fi 
  9.     if [ ! -f $1 ]; then 
  10.       echo "Sorry, sir, I can't find this  log file, pls try again!" 
  11.     exit 0 
  12.     fi 
  13.  ################################ 
  14.     echo "Most of the ip:" 
  15.     echo "-------------------------------------------" 
  16.     awk '{ print $1 }' $LOG| sort| uniq -c| sort -nr| head -10 
  17.     echo 
  18.     echo 
  19. ################### 
  20.     echo "Most of the time:" 
  21.     echo "--------------------------------------------" 
  22.     awk '{ print $2 }' $LOG| cut -c 14-18| sort| uniq -c| sort -nr| head -10 
  23.     echo 
  24.     echo 
  25. ####################### 
  26.     echo "Most of the page:" 
  27.     echo "--------------------------------------------" 
  28.     awk '{print $4}' $LOG| sed 's/^.*\(.cn*\)\"/\1/g'| sort| uniq -c| sort -rn| head -10 
  29.     echo 
  30.     echo 
  31. #####################3 
  32.     echo "Most of the time / Most of the ip:" 
  33.     echo "--------------------------------------------" 
  34.         awk '{ print $2 }' $LOG| cut -c 14-18| sort -n| uniq -c| sort -nr| head -10 > timelog 
  35.     for i in `awk '{ print $2 }' timelog` 
  36.     do 
  37.        num=`grep $i timelog| awk '{ print $1 }' ` 
  38.        echo "$i $num" 
  39.        ip=`grep $i $LOG| awk '{ print $1}'| sort -n| uniq -c| sort -nr| head -10` 
  40.        echo "$ip" 
  41.        echo 
  42.     done 
  43.     rm -f timelog