|
#! /bin/bash #BY swztdza if [ -z $1 ];then echo '脚本后面请输入httpd访问日志绝对路径' else
if [ -z $2 ];then #ip地址解析模块的禁用,没有参数为不禁用 BL5=1 else BL5=0 fi
BL1=0 #--------------------------------以下正文--------------------------------------- for i in `sed -n '1,10000p' $1 | awk '{print$4,$5,$1,$(NF-2),$(NF-3),$(NF-4)}'` #获取httpd访问日志的第4列,第5列和第一列的全部信息,然后赋值给循环变量
do
BL1=`expr $BL1 + 1` #每次循环一次,此变量加一
if [ $BL1 -eq6 ];then #当此变量(BL1)等于6时,则换行显示(表示已经显示了6列,需要换行)
#------------------------------------------------------------------------------- #-----------------分析第6列的相关字符,以便辨识出访问设备---------------------- if [ $i== "Win64" ];then BL4="1" elif [ $i== "NT" ];then BL4="1" elif [ $i== "Win64;" ];then BL4="1" elif [ $i== "Windows" ];then BL4="1" elif [ $i== "(KHTML," ];then BL4="2" else BL4="0" fi #-------------------------------------------------------------------------------
#------------------------------------------------------------------------------- #--------------将分析出来的辨识符号汇总,并进行总分析,并赋值变量BL6------------ if [$BL3 == "1" ];then BL6=`echo-e "\e[31mWindows System\e[0m"` elif [$BL3 == "3" ];then BL6=`echo-e "\e[34mAndroid System\e[0m"` elif [$BL4 == "1" ];then BL6=`echo-e "\e[31mWindows System\e[0m"` elif [$BL4 == "2" ];then BL6=`echo-e "\e[33mWindows OR MAC System\e[0m"` elif [$BL7 == "1" ];then BL6=`echo-e "\e[31mWindows System\e[0m"` elif [$BL7 == "4" ];then BL6=`echo-e "\e[34mAndroid OR Linux System\e[0m"` else BL6=`echoOther system` fi #-------------------------------------------------------------------------------
i=`echo" "` #隐藏此列常规输出 echo $i #不能去掉,否则会出现脚本错误
if [ $BL5== "1" ];then #ip地址解析显示模块,为1时代表不禁用
echo"ip所在地: "$BL2 fi
echo"访问系统辨识: "$BL6 #显示辨识系统的汇总信息 BL1=0 #将此变量归零,重新循环!
else #当此变量(BL1)不等于6时,则不换行显示(还没有显示超过6列,不需要换行)
#------------------------------------------------------------------------------- #--------------------ip地址解析模块,如有更好的解析网址后续会修改-------------- if [ $BL5== "1" ];then if [$BL1 -eq 3 ];then #循环至第三次才开始解析 BL2=`curl-s http://ip.tool.chinaz.com/$i | grep "w50-0" | sed -n '2p' | awk'{print $3,$4}' | sed 's/w50-0">//' | sed 's/<\/span>//'` fi fi #-------------------------------------------------------------------------------
#------------------------------------------------------------------------------ #------------------分析第4列的相关字符,以便辨识出访问设备---------------------- if [ $BL1-eq 4 ];then if [$i == "Windows" ];then BL3="1" elif[ $i == "NT" ];then BL3="1" elif[ $i == "Mobile"];then BL3="3" else BL3="0" fi #-------------------------------------------------------------------------------
i=`echo" "` #隐藏此列常规输出 fi
#------------------------------------------------------------------------------ #-----------------分析第5列的相关字符,以便辨识出访问设备---------------------- if [ $BL1-eq 5 ];then if [$i == "WOW64;" ];then BL7="1" elif[ $i == "SE" ];then BL7="1" elif[ $i == "x86_64;" ];then BL7="4" else BL7="0" fi #-------------------------------------------------------------------------------
i=`echo" "` #隐藏此列常规输出 fi
echo -n$i #不换行显示常规输出 echo -n" " #每次添加一个空格 fi
#sleep 0.1 #暂停时间,看需求修改
done fi #-------------------------for循环体结束---------------------------------------
echo " " #换行 echo -e '\e[32m日志分析结束\e[0m'
BL4=`cat $1 | wc -l` #获取日志的行数
echo -e "分析时间:\e[31m"$SECONDS"\e[0m 秒" echo -e "分析条目: \e[31m"$BL4"\e[0m 个"
|