发表于 2018-8-27 12:00:44

统计access.log文件每个ip的下载总量_shell脚本

  工作环境:Red Hat Enterprise Linux Server>  #!/bin/bash
  #
  #cat xferlog |awk '{print $7,$8}'|sort -n|head -100 >ssh.txt
  cat xferlog |awk '{print $7,$8}'|sort -t. -k3,4 -n   >ssh.txt
  ip=(`cat ssh.txt|cut -d " " -f1`)
  dx=(`cat ssh.txt|cut -d " " -f2`)
  sum=0
  for i in `seq 0 $((${#ip[@]}-1))`
  do
  #判断读入的大小是否为0
  if [ ${dx[$i]} != 0 ];then
  z1=`echo "${dx[$i]}/1024"|bc`
  sum=$(($z1+$sum))
  fi
  #判断是否到了最后
  if [ $i != ${#ip[@]} ];then
  #判断是否,取值到了倒数第2个,到了的话,和最后一个进行比较
  if [ $i == $((${#ip[@]}-2)) ];then
  #如果不相等,则输出倒数第二个的值和最后一个值,相等,则输出一个和值
  if [ ${ip[$((${#ip[@]}-1))]} != ${ip[$((${#ip[@]}-2))]} ];then
  [ $num -ge 1024 ] && echo "${ip[$i]} - $(($sum/1024))M"
  [ ${dx[$((${#dx[@]}-1))]} -ge 1024 ] && echo "${ip[$(($i+1))]} - $((${dx[$((${#dx[@]}-1))]}/1024))M"
  exit 1
  else
  sum=$(($sum+${dx[$((${#dx[@]}-1))]}))
  [ $sum -ge 1024 ] && echo "${ip[$i]} - $(($sum/1024))M"
  exit 2
  fi
  else
  #没到第2个的话,则进行正常的比较,后一个与当前一个进行比较
  if [ ${ip[$(($i+1))]} != ${ip[$i]} ];then
  [ $sum -ge 1024 ] && echo "${ip[$i]} - $(($sum/1024))M"
  sum=0
  fi
  fi
  fi
  done
  寻求帮助:这个脚本看起来比较麻烦,希望有哪位朋友,有好的方法,可以告知一下,谢谢~~!

页: [1]
查看完整版本: 统计access.log文件每个ip的下载总量_shell脚本