交换机日志可以保存多少条(采集交换机配置文件后发送到指定邮箱)

背景:之前做了一个自动化备份的python脚本,但是每次是否备份总不放心得上去看下,所有就想加一个功能,就是备份完将备份后的脚本通过email方式发送到公司邮箱(也可以发送给其他领导的邮箱)

一、需要哪些模块

1、netmiko

2、os

3、time

4、smtp

5、email

除了netmiko是外置模块外,其他都是python内置的模块

二、上脚本

from netmiko import ConnectHandler import time import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIMEApplication import os from pathlib import Path # 获取当前时间的年月日 directory_time = time.strftime("%Y-%m-%d", time.localtime()) # 创建文件 # 创建实时时间文件 def mkdir(): folder = os.path.exists(directory_time) if not folder: # 判断是否存在文件夹如果不存在则创建为文件夹 os.makedirs(directory_time) def save_config(): # 通过这个函数可以切割各个部分然后通过循环赋值给每一个变量 f = open('ip.txt', 'r', encoding='UTF-8') line = 'A' print('正在采集设备配置,请稍等......') while line != "": line = f.readline() File_name = time.strftime("%H:%M:%S", time.localtime()) while line: a = line.split() ip = a[:1] username = a[1:2] password = a[2:3] port = a[3:4] line = f.readline() device = ConnectHandler(device_type='huawei', ip=ip[0], username=username[0], password=password[0], port=port[0]) output = device.send_command('dis cu') file = open('%s/%s-%s.txt' % (directory_time, ip[0], file_name), 'w', encoding='UTF-8') print(output, file=file, flush=True) # print(output, file=sys.stdout) print('已采集%s' % ip[0]) device.disconnect() f.close() print('已全部采集成') def send_mail(): fromaddr = 'xxxxx@qq.com' toaddr = 'xxxx@xxx.com' # mixed代表着email是携带附件的 msg = MIMEMultipart('mixed') msg['From'] = fromaddr msg['To'] = toaddr msg['Subject'] = '网络设备配置文件备份' # 正文部分,也可以写某某领导,交换机配置备份见附件,我这是测试使用 body = '附件见底部' msg.attach(MIMEText(body, 'plain')) # 遍历文件夹的文件 path = os.getcwd() '/' directory_time p = Path(path) Filelist = p.glob('**/*.*') # 逐个添加至msg消息中,并且添加文件信息 for file in Filelist: f = str(file) # 通过/分行去最后一个字符作为文件名 filename = f.split('/')[-1] print(filename) # 所有文件都可以这样去发送 csv_file = open(file, 'rb').read() csv = MIMEApplication(csv_file) csv.add_header('Content-Disposition', 'attachment', filename=filename) msg.attach(csv) server = smtplib.SMTP('smtp.qq.com', 25) server.ehlo() server.starttls() server.ehlo() # kradlaldcybabdfb 为鉴权码 server.login(fromaddr, 'kradlaldcybabdfb') text = msg.as_string() server.sendmail(fromaddr, toaddr, text) if __name__ == '__main__': mkdir() save_config() send_mail()

思路大概就是:

1、通过当天日期为文件夹备份,那么先有一个函数来创建文件夹

2、遍历ip.txt文件,得到username、password、port、ip参数,示例如下

192.168.1.1 python admin 22 192.168.1.2 python admin 22 192.168.1.3 python admin 8244

3、当全部文件备份好后储存在文件夹内在做邮件发送

4、邮件发送时通过遍历文件夹内容,添加到发送的附件中发送给对应的邮箱

注:发送邮箱需要开SMTP协议,然后通过鉴权码发送。怎么开SMTP协议自行百度

收到的邮件如下

交换机日志可以保存多少条(采集交换机配置文件后发送到指定邮箱)(1)

相对应的文字可以自行修改

如果觉得对你的工作或者学习有帮助点个赞吧

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页