代码拉取完成,页面将自动刷新
#!/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.")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。