今天我们接到了一个任务,要进行一项安全审计分析,就是绕行的分析,即如果源地址是从终端域直接访问后台服务器,而不是通过企业的4A(账号、认证、授权、审计)系统的唯一入口进行访问,则被定义为绕行。
任务分解为:
一、需要将resoure(所有安全资产)的表格导入到mysql中。
二、需要将包含终端信息源地址的表格导入到mysql中。
三、执行sql后,将执行结果直接另存为excel进行导出,就得到了最后的结果表。
解决的问题:1、如果将excel表导入到mysql中;2、如果执行sql的操作;3、如何将表导出。
这样就可以实现分析的自动化,而不需要手工导表到mysql 中,然后再执行存储过程进行计算,最后要手工的导表出来。整个流程一气呵成,相当爽,这就是使用python来解决一些重复劳动,提升工作效率的好工具啦。
废话不多说,直接代码和解释一起上啦:
第一步:利用pandas导入excel表格,通过pd.read_excel的功能就可以轻松的导入表格进来了。实现的自动化的第一步:
import pandas as pd
from pandas import DataFrame
from sqlalchemy import create_engine
import pymysql
raoxingLogFile= r'D:\绕行审计模型\raoxinglog.xls'
MechineDatar=r'D:\绕行审计模型\mechine.xlsx'
raoxingalladdress=r'D:\绕行审计模型\raoxingalladdress.xlsx'
alldata = DataFrame()
df_raoxinglog = pd.read_excel(raoxingLogFile,index=False, encoding='utf8')
df_resource=pd.read_excel(MechineDatar,index=False, encoding='utf8')
df_mac=pd.read_excel(raoxingalladdress,index=False, encoding='utf8')
第二步:将表格导入到本机的mysql的数据库中,并建立相应的表格
里面的:root是数据库的用户名;123456是数据库的密码;raoxingtable,resource,mac是导入mysql中的表格的名称,schema=“pandas”中的pandas是数据库名称。后面的if_exists='replace',是如果表已经存在就进行覆盖,如果不存在就新建。
# 里面的root是用户名,123456是数据库密码
engine = create_engine("mysql+pymysql://root:123456@localhost:3306/pandas?charset=utf8")
# 导入数据库绕行日志,raoxinglog是表名。
df_raoxinglog.to_sql("raoxingtable", engine, schema="pandas", if_exists='replace', index=True,chunksize=None, dtype=None)
print("已导入数据库绕行日志")
# 导入数据库资产中心数据
df_resource.to_sql("resource", engine, schema="pandas", if_exists='replace', index=True,chunksize=None, dtype=None)
# 导入源地址列表数据
df_mac.to_sql("mac", engine, schema="pandas", if_exists='replace', index=True,chunksize=None, dtype=None)
第三步:就是连接数据库,并执行mysql中的sql了。大家可以随意替换sql的内容,根据实际情况进行替换。
conn = pymysql.connect(host="127.0.0.1", user="root",password="123456",database="pandas",charset="utf8")
print("已连接数据库")
sql = '''select raoxingtable.`发生时间`,raoxingtable.`源地址`,mac.`使用人`,mac.`使用楼层`,raoxingtable.`发生主机IP` , resource.`责任人`,resource.`用途概述`,mac.`绕行类型`
FROM raoxingtable LEFT JOIN resource ON raoxingtable.`发生主机IP`=resource.`IP地址`
LEFT JOIN mac ON raoxingtable.`源地址`=mac.`IP地址`;'''
print("执行sql操作成功")
df = pd.read_sql(sql,conn)
print(df)
第四步:导出sql的计算结果到桌面上的表格里面,实现自动化运算。
alldata=alldata.append(df)
alldata.to_excel('D:\绕行审计模型\overcome_log.xlsx')
print("已成功导出")
第五步:进行exe程序的打包发布,之后就只需要双击exe的文件就能够帮我自动导表,自动分析,自动出结果了,后续还可以进行可视化报表展示,直接输出到word里面,一份专业的分析报告就出来了,是不是很酷炫啊,哈哈~
1、到程序的文件目录下面,准备一个小的ico的图片,然后进行打包操作:pyinstaller -F -i 图标名称和python的脚本 ,前提是图标的文件要和脚本放在一起。
2、打包完成后,在dist文件夹里面就有exe的文件了,就可以点击执行了。
原来需要1个小时的工作,现在双击下就能成功啦,职场工具人的利器!!
如有问题和需要交流的,大家可以给我留言哟~