python实时监控访问日志

需求:对nginx的访问日志进行实时的检查,如果恶意访问则添加到iptables列表中进行拒绝设置。//访问日志的格式为默认格式

***正则表达式的zz_r变量中的关键字自行增减。目前在使用中.......

 1 import os,sys
 2 import subprocess
 3 import re
 4
 5
 6 #access_log=‘/usr/local/nginx/logs/http-access.log‘
 7 def monitor_log(access_log):
 8     print(‘monitor access log :%s‘%access_log)
 9     #实时读取访问日志
10     popen = subprocess.Popen(‘tail -f ‘+access_log,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
11     #pid=popen.pid
12     #print(‘popen.pid:‘,str(pid))
13     while True:
14         zz_r = re.compile("\.mdb|\.inc|\.sql|\.config|\.bak|\.svn|info\.php|\.bak|wwwroot|wp-login 15                  |gf_admin|struts|jmx-console|\.ini|\.conf|%2Fpasswd|passwd|\.xml|\.exe|execute|1.asp|admin\.aspx 16                  |dircontext|phpmyadmin|order%20by|%20where%20|%20union%20|%2ctable_name%20|%27exec 17                  |select%20|%20and%201=1|%2csleep|%20and%201=2|div.aps|xiaoma.jsp|tom.jsp|py.jsp 18                  |context\.get|getwriter|information_schema|/k8cmd|ver007.jsp|ver008.jsp|ver007|ver008|%if|\.aar|cmdshell" )
19         line=popen.stdout.readline().strip()
20         new_line=zz_r.search(line.lower())
21         #print("----->",new_line)
22         #判断是否有匹配到,如果有匹配则将IP添加到iptables做drop处理
23         if new_line:
24            #提取恶意IP
25            zz = re.compile(‘[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}‘)
26            #line_ip = zz.search((line.split(‘:‘)[1].split(‘,‘))[0]).group()
27            line_ip = zz.search(line).group()
28            #将IP添加到iptables列表中
29            os.system("iptables -I INPUT -s %s -j DROP" %line_ip)
30            print(‘the fuck ip [%s] is added to iptables‘%line_ip)
31
32
33 if __name__==‘__main__‘:
34     #判断程序启动是否有三个参,如果是三个参则将第三个参数传进monitor_log函数里
35     if len(sys.argv) == 3:
36         monitor_log(sys.argv[2])
37     else:
38         msg=‘‘‘
39             input argv is wrong
40             example: \033[31;1m python sec_monitor -f access.log\033[0m
41             ‘‘‘
42         print(msg)
时间: 2024-10-09 23:32:40

python实时监控访问日志的相关文章

今晚九点|如何使用 Python 分析 web 访问日志?

主题:如何使用 Python 分析 Web 访问日志 内容 Python 基础 字符串.字典.文件.时间 Web 访问日志 实战 提问 主讲师:KK 多语言混搭工程师,热爱开源技术,喜欢GET新技能,5年 PHP.Python 项目开发经验,带领团队完成多个中.小型项目开发,对安全.云等多个领域富有浓厚兴趣,擅长于 WEB 安全开发.性能优化.分布式应用开发&设计等多方面,做事认真负责,乐于分享技能,现任 51Reboot.com Python 实战班讲师 任何语言都有使用场景,只有合适和不合适

python脚本实现访问日志合并

网易云对象存储的访问日志默认按小时生成一个日志文件,不利于统计当日整体数据,于是考虑将多个日志文 件合并到一个文件中 #!/usr/bin/evn python # -*- coding:utf-8 -*- import nos import time import sys import os import re access_key = "54175b3a0a544f07a81d618719d44a0a" secret_key = "513b131cd66d46f6bc5a

Python分析web访问日志

通用日志格式127.0.0.1 - - [14/May/2017:12:45:29 +0800] "GET /index.html HTTP/1.1" 200 4286远程 - - 主机 IP 请求时间 时区 方法 资源 协议 状态码 发送字节 组合日志格式127.0.0.1 - - [14/May/2017:12:51:13 +0800] "GET /index.html HTTP/1.1" 200 4286 "http://127.0.0.1/&quo

python——nagios监控nginx日志 request_time

遇到问题:nginx日志包含非常重要的信息.比如upstream_response_time 和request_time.现需求监控改值. 解决问题:编写python脚本,通过nagios check_nrpe 插件完成监控. 前提了解: nginx日志格式: log_format  main  '$remote_addr |$time_local| $request | $status | $body_byte s_sent | $http_referer | $http_user_agent

Python基于nginx访问日志并统计IP访问量

如果想看看Nginx有多少IP访问量,有哪些国家访问,并显示IP地址的归属地分布,python可以结合使用高春辉老师ipip.net[免费版 IP 地址数据库],Shell可以使用nali,我这边主要使用python语言来实现需求,并将查询结果以邮件形式发送,也是为了学习和回顾python语言.很感谢高春辉老师提供的免费版IP地址数据库. 一.Ningx日志如下: 41.42.97.104 - - [26/Feb/2015:03:35:40 -0500] "GET /root/ HTTP/1.1

Ubuntu 实时监控tomcat日志

1.先切换到:cd tomcat/logs 2.tail -f catalina.out 3.这样运行时就可以实时查看运行日志了 Ctrl+c 是退出tail命令.

Python获取Nginx访问日志,写入数据库

#!/usr/bin/env python # coding: utf-8 # Auther:liangkai # Date:2018/6/26 11:26 # License: (C) Copyright 2013-2018, Node Supply Chain Manager Corporation Limited. # Describe: import pymysql import re import datetime import sys import time # DB variabl

flume 监控hive日志文件

flume 监控hive 日志文件 一: flume 监控hive的日志 1.1 案例需求: 1. 实时监控某个日志文件,将数据收集到存储hdfs 上面, 此案例使用exec source ,实时监控文件数据,使用Memory Channel 缓存数据,使用HDFS Sink 写入数据 2. 此案例实时监控hive 日志文件,放到hdfs 目录当中. hive 的日志目录是 hive.log.dir = /home/hadoop/yangyang/hive/logs 1.2 在hdfs 上面创建

利用ngxtop实时监控nginx的访问情况

关于对nginx web server的实时访问的实时监控问题,我很久之前就想实现的,现在虽有nginx自带的status扩展,但那是全局的,无法细分到vhost,并且提供的metric也很少,加之目前是通过cacti每5分钟取nginx status,实时性也不是很好,记得前一阵为maptail兴奋一点,以为能够解决我的问题,可是他只是漂亮的在地图上显示实时用户的ip地理位置信息,没有其他功能了,不过他的思想很重要---"tail -f log",如今的ngxtop其实也是这种思想,