日志获取ip
# nginx日志监控系统
# 数据来源为: nginx的access.log
# 当某一个ip出现次数超过50次以后
# 报警 xxxx 地址,已经访问超过50次 print
# 运行频率,每分钟运行一次
# 1、读取文件(I/O操作) open(access.log)
# 2、解析文件,分析出ip
# 3、把ip存起来,并且记录ip出现次数, 把列表转为集合,可去重,在把集合的ip放列表里记录ip的次数
# 4、分析记录到每个ip出现次数,当某一个ip出现次数超过50次,打印出 这个ip出现次数超过50次了
# 5、让这个程序滚动起来,不会停止,每分钟运行1次;
# 6、每次读取当时候需要跳过已读数据; 需要记录上次到哪了,下次读取到时候先进行跳转
file = open("access.log","r",encoding = "utf-8")
# print(file.read().strip())
ip_list = []
for line in file:
ip = line.split(" ")[0]
ip_list.append(ip)
# print(ip)
ip_set = set(ip_list)
for ip in ip_set:
if ip_list.count(ip)>=50:
print(ip,"非常危险,超过50次")
print(ip,":",ip_list.count(ip))
file.close()
print("==============本次结束===============")
浙公网安备 33010602011771号