1 Star 0 Fork 5

现任明教教主-乾颐堂/ISE_API

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
ise_syslog.py 2.05 KB
一键复制 编辑 原始数据 按行查看 历史
现任明教教主-乾颐堂 提交于 2019-06-07 12:08 . syslog分析!
#!/usr/bin/env python3
# -*- coding=utf-8 -*-
# 本脚由亁颐堂现任明教教主编写,用于乾颐盾Python课程!
# 教主QQ:605658506
# 亁颐堂官网www.qytang.com
# 教主技术进化论拓展你的技术新边疆
# https://ke.qq.com/course/271956?tuin=24199d8a
import logging
import socketserver
import threading
import re
from dateutil import parser
LOG_FILE = 'pysyslog.log'
logging.basicConfig(level=logging.INFO,
format='%(message)s',
datefmt='',
filename=LOG_FILE, # log文件
filemode='a') # 追加模式
class SyslogUDPHandler(socketserver.BaseRequestHandler):
def handle(self):
data = bytes.decode(self.request[0].strip()) # 读取数据
date = re.match('.*<\d+>(\w+\s+\d+\s+\d+:\d+:\d+)\s+QYTISE.*', data).groups()[0]
date_obj = parser.parse(date)
if 'RADIUS Accounting stop request' in data or 'RADIUS Accounting start request' in data:
account_data = data.split(',')
account_dict = {}
for x in account_data:
entry = x.strip().split('=')
try:
account_dict[entry[0]] = entry[1]
except IndexError:
continue
account_dict.update({'date': date_obj})
print(account_dict)
# print("%s : " % self.client_address[0], str(data)) # 打印syslog信息
logging.info(str(data)) # 把信息logging到本地
if __name__ == "__main__":
# 使用Linux解释器 & WIN解释器
try:
HOST, PORT = "0.0.0.0", 514 # 本地地址与端口
server = socketserver.UDPServer((HOST, PORT), SyslogUDPHandler) # 绑定本地地址,端口和syslog处理方法
print("Syslog 服务已启用, 写入日志到文本文件!!!")
server.serve_forever(poll_interval=0.5) # 运行服务器,和轮询间隔
except (IOError, SystemExit):
raise
except KeyboardInterrupt: # 捕获Ctrl+C,打印信息并退出
print("Crtl+C Pressed. Shutting down.")
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/qytang/ISE_API.git
git@gitee.com:qytang/ISE_API.git
qytang
ISE_API
ISE_API
master

搜索帮助