前言
最近客户要把所有安全厂商的系统日志统一收录监管,我们的系统日志存放在mysql中,所以得写个脚本取数据发送到他们的网络端口
代码实现
大体思路为取前五分钟的数据发送到第三方udp端口,每五分钟发送一次,代码如下:
import pymysql,socket,time
# 建立数据库的连接信息
host = "10.7.2.20" # 数据库的ip地址
user = "root" # 数据库的账号
password = "123456" # 数据库的密码
port = 3306 # mysql数据库通用端口号
OUTPUTIP = "192.168.44.111" #目的ip
OUTPUTPORT = 6666 #目的端口
#创建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
def main():
mysql = pymysql.connect(host=host, user=user, password=password, port=port)
#新建查询页面
cursor = mysql.cursor()
#sql
sql = 'select * from rs_datainsight.rs_admin_log where from_unixtime(createtime,\'%Y-%m-%d %H:%i:%s\') between date_format(date_add(now(), interval - 5 minute),\'%Y-%m-%d %H:%i:%s\') and date_format(now(),\'%Y-%m-%d %H:%i:%s\')'
#执行sql
cursor.execute(sql)
#返回结果
# result = cursor.fetchone() #返回单条数据
results = cursor.fetchall() #返回多条数据
for result in results:
#print(result)
#发送到第三方端口
s.sendto(str(result).encode("utf-8"),(OUTPUTIP,OUTPUTPORT))
#关闭查询
cursor.close()
#关闭数据库
mysql.close()
if __name__ == "__main__":
while True:
main()
time.sleep(300) #睡眠五分钟
s.close()
代码比较简单,就不多做叙述了,同时将脚本加入到任务执行计划里
*/5 * * * * /data/python3/bin/python3 /data/mysql2udp.py
每五分钟执行一次,保证脚本因为外界因素挂掉之后能够重启
有不同意见或者觉得代码有可优化地方的小伙伴可以在下方j进行留言评论~~