Python脚本和Bash命令统计访问爬虫的IP地址和城市信息

ipinfo.png

首先部署 IP地址信息库,参考 https://github.com/hongwenjun/ip

统计日志中IP排名写到iplist.txt,批量查IP地址信息,最新日志100条

  • 参考如下 Bash 命令,第一行中是查看 一个容器的日志
  • 如果不是 Docker 环境部署 Nginx,日志文件是 /var/log/nginx/access.log
docker logs nginx-php 2>/dev/null 
  | grep -oE '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' 
  | sort | uniq -c| sort -nrk 1 | head -n 100 | tee iplist.txt

使用 python3 ipinfo.py 命令读取 iplist.txt 输出 IP地址和城市

# ipinfo.py
import re, ipdb, ipaddress
db = ipdb.BaseStation("/app/qqwry.ipdb")
with open("/app/iplist.txt", "r") as f:
    data = f.read()

iplist = re.findall(r"b(?:[0-9]{1,3}.){3}[0-9]{1,3}b", data)
for ip in iplist:
   try:
      ipaddress.ip_address(ip).is_global
      city = db.find(ip, "CN")
      print(ip + " @" + city[0] + city[1] + city[2] + city[3])
   except:
      pass

# 统计日志中IP排名写到iplist.txt,批量查IP地址信息,最新日志100条
"""
docker logs nginx-php 2>/dev/null 
  | grep -oE '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' 
  | sort | uniq -c| sort -nrk 1 | head -n 100 | tee iplist.txt

docker exec -it python3 python3 ipinfo.py

docker logs nginx-php 2>/dev/null | tail -100  
  | grep -oE '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' 
  | sort | uniq -c| sort -nrk 1 | head -n 100 | tee iplist.txt
"""

我的环境都是Docker部署的,所以使用脚本注释中的 命令行就可以很方获得信息。

  • 如果你的环境不同,请修改对应文件的实际目录
  • 实际使用效果,两个命令查询最新访问服务器的iP
    ip.png

相关推荐: 手工配置GRUB2+iPXE引导netboot.xyz进行 Linux 远程重新安装系统

netboot.xyz:基于iPXE的网络可引导操作系统安装netboot.xyz 可以方便地引导到任何类型的操作系统或实用程序磁盘,而不需要花时间去检索 ISO 来运行它。iPXE 是用来在 BIOS 内提供一个用户友好的菜单,让您可以轻松地选择您想要的操作…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论