分析Web服务器日志 获取访问数最多的IP地址的Shell脚本

安全的防范无处不在,其中一个主要的途径是监控日志,日志记录了绝大多数服务器受访的动向和痕迹。Web服务的日志每天的量比较大,我们怎么知道哪些IP地址访问不正常,偏多?可以写个shell脚本对Web服务的日志进行分析,得出访问最多的IP地址的列表

  1. #!/bin/bash
  2. # 获取ip列表存放位置
  3. DEST=~/reports/ips
  4. # 域名
  5. DOM=$1
  6. # 该域名访问日志位置
  7. LOGFILE=/var/logs/httpd/$DOM/access.log
  8. # 如果没有给出具体域名,直接退出
  9. [ $# -eq 0 ] && exit 1
  10. # 建立目标目录
  11. [ ! -d $DEST ] && mkdir -p $DEST
  12. # 开始处理
  13. if [ -f $LOGFILE ]
  14. then
  15.       echo "Processing log for $DOM..."
  16.       awk '{ print $1}' $LOGFILE | sort  | uniq -c  | sort -nr > $DEST/$DOM.txt
  17.       echo "Report written to $DEST/$DOM.txt"
  18. fi
复制代码

使用前把上面的代码存入文件,如 gettopips.sh,下面给一个例子,假如我服务器上有一个 foobar.com 的站点,我想看看访问我的这个站点最多的ip:

./gettopips.sh foobar.com

执行后会得到类似如下的输出

 13687 72.30.87.116
 7416 66.249.71.138
 7402 66.249.71.140
 7261 66.249.71.139
 6510 74.86.49.130
 4879 67.195.37.159
 4121 66.90.104.20
 3958 93.158.144.27
 3262 122.172.49.89

第一列是数量,第二列是ip地址


上面的代码在使用的时候,不同的linux发行版本,不同的安装目录,可能有些地方要更改的,不过,主体是那个 awk 的 shell,大家看着改吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值