1. 背景
团队维护多套业务系统,有支付系统、金融系统、数据系统、核验系统等二十多套业务系统,每套业务系统有10 - 50台服务器不等,当前团队中存在一套自动化巡检系统,每十分钟巡检一次,有异常可实时告警。但每天还需要人工登录服务器巡检两次,因人工巡检耗时长、漏巡风险大,需要一个运维巡检工具帮助实现快速人工巡检。
2. 巡检逻辑

# 调整单元格样式 def excel_styles(self): # 获取Excel文件 excel_file = openpyxl.load_workbook(self.export_excel) excel_file.move_sheet("总览", -100) # 定义边框样式 thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin')) # 定义颜色样式 red_fill = PatternFill(start_color='FFFF0000', end_color='FFFF0000', fill_type='solid') summary_sheet_fill = PatternFill(start_color='FFFFFFFF', end_color='FFFFFFFF', fill_type='solid') summary_sheet_font = openpyxl.styles.Font(bold=True, color='FFFF0000') # 定义居中样式 # 垂直居中 align = openpyxl.styles.Alignment(horizontal='center', vertical='center', wrapText=True) # 调整Excel样式 for sheet in excel_file: # 统计所有系统的错误巡检项数量, 初始值为0 error_count = 0 # 保存列宽数据 dims = {} for row in sheet.iter_rows(): for cell in row: # 应用边框样式, 添加框线 cell.border = thin_border # 应用居中样式 cell.alignment = align # 遍历单元格操作 if cell.value and '*' in str(cell.value): # 应用颜色样式 cell.fill = red_fill if sheet.title == "总览": # 删除 * 字符 cell.value = cell.value.replace('*', '') cell.fill = summary_sheet_fill cell.font = summary_sheet_font if cell.value == "0": cell.font = openpyxl.styles.Font(bold=True, color='00000000') # 统计各系统错误巡检项的数量 error_count += cell.value.count('*') # 将所有单元格设置为自动换行 cell.alignment = openpyxl.styles.Alignment(wrapText=True) # 遍历并获取最大列宽 if cell.value: cell_len = 0.7*len(re.findall('([/u4e00-/u9fa5])', str(cell.value))) + len(str(cell.value)) dims[cell.column] = max((dims.get(cell.column, 0), cell_len)) # 将每行的最后一个单元格设置为自动换行,并将行高设置为14字符 max_row = sheet.max_row max_col = sheet.max_column for row_num in range(1, max_row+1): # cell = sheet.cell(row=row_num, column=max_col) # cell.alignment = openpyxl.styles.Alignment(wrapText=True) sheet.row_dimensions[row_num].height = 14 # 设置最大列宽 for col, value in dims.items(): sheet.column_dimensions[get_column_letter(col)].width = value + 2 # 当列宽超过28字符时, 设置最大列宽为28字符 if value > 28: sheet.column_dimensions[get_column_letter(col)].width = 28 # 保存Excel文件 excel_file.save(self.export_excel) 3.2.5 发送邮件
为了让各系统负责人更好的监控巡检结果,每次巡检后都会通过邮箱给他们推送巡检结果邮件,即使周末只有一个人巡检,各系统负责人也能第一时间获得异常巡检项,及时远程处理。
# 全局变量 def __init__(self): # 设置邮箱参数 self.smtp_server = 'smtp.163.com' self.imap_server = 'imap.163.com' self.smtp_port = 25 self.sender_email = 'xxx@163.com' self.sender_passwd ='xxxxxxxx' self.receiver_email = ['xxx@163.com', 'xxx@qq.com', 'xxx@sina.com'] # 发送邮件 def send_email(self): # 连接到IMAP服务器 try: mail = imaplib.IMAP4_SSL(self.imap_server) mail.login(self.sender_email, self.sender_passwd) except: time.sleep(1) # 判断文件是否存在 try: if os.path.exists(self.export_excel): with open(self.export_excel, 'rb') as f: excel_data = f.read() msg_root = MIMEMultipart() msg_root['From'] = self.sender_email msg_root['To'] = ','.join(self.receiver_email) msg_root['Subject'] = '系统巡检结果' msg_text = MIMEText('全系统统一巡检结果, 详情见附件。') msg_root.attach(msg_text) # 添加附件 excel_send = MIMEApplication(excel_data) excel_send["Content-Type"] = 'application/octet-stream' excel_send.add_header('Content-Disposition', 'attachment', filename='统一巡检结果.xlsx') msg_root.attach(excel_send) # 登录邮箱 smtp = smtplib.SMTP(self.smtp_server, self.smtp_port) smtp.starttls() smtp.login(self.sender_email, self.sender_passwd) # 发送邮件 smtp.sendmail(self.sender_email, self.receiver_email, msg_root.as_string()) smtp.quit() except Exception as e: print("No file:", e) 3.2.6 通过邮件远程巡检
通过邮件发送自定义命令到指定邮箱,服务端实时监控邮箱邮件,收到邮件判断指令,不同指令执行不同操作,然后再通过邮件进行反馈处理结果。
(部分内容私信获取)
这里先给大家展示一下我进的兼职群和最近接单的截图,小伙伴有需要也可继续往下看.





有需要Python兼职爬虫资料和兼职内推的小伙伴可点下方链接
👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
题外话
感谢你能看到最后,给大家准备了一些福利!
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python兼职渠道推荐*
学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.

三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
若有侵权,请联系删除














