Python脚本实现交换机状态信息获取

简介: 通过paramiko(python ssh包)ssh连接交换机并执行状态信息命令,将结果通过正则清洗后以邮件形式推送给目标邮箱,过程中涉及包导入、SMTP协议、正则表达式、ssh协议

Python脚本实现交换机状态信息获取

简述

通过paramiko(python ssh包)ssh连接交换机并执行状态信息命令,将结果通过正则清洗后以邮件形式推送给目标邮箱,过程中涉及包导入、SMTP协议、正则表达式、ssh协议

步骤

安装ssh包并连接交换机

pip install paramiko
github

    def ssh_result(self, cmd):
        t = paramiko.Transport(self.ip, self.port)
        t.connect(username=self.username, password=self.password)
        chan = t.open_session()
        chan.settimeout(timeout=15)
        chan.get_pty()
        chan.invoke_shell()
        time.sleep(5)
        i = 1
        while i < 10:
            chan.send(cmd)
            i += 1
        time.sleep(2)
        result = chan.recv(65535)
        result = str(result, encoding='utf-8')
        return result

清洗数据

返回列表类型

class Regule:
    def __init__(self, string):
        self.string = string

    def PwrStatus(self):
        pattern = re.compile(r'PWR1.*')
        listP = pattern.findall(self.string)[0][:-2].split()  # split以空格分词
        return listP

    def FanStatus(self):
        pattern = re.compile(r'FAN1.*')
        listF = pattern.findall(self.string)[0][:-2].split()
        return listF

    def SwitchStatus(self):
        pattern = re.compile(r'-.*S5730.*')
        listS = pattern.findall(self.string)[1][:-2].split()
        return listS

    def Temperature(self):
        pattern = re.compile(r'NA.*[0-9]')
        # listTem = pattern.findall(string)[2:][2:].split()
        listTem = pattern.findall(self.string)[0][6:].split()
        return listTem

邮件发送

借用QQ邮箱的邮件服务器

class mail:
    def __init__(self):
        value = config.Mailvalue()
        self.mail_user = value.mail_user
        self.mail_host = value.mail_host
        self.mail_pass = value.mail_pass

    def sendmail(self, receivers,context):
        sender = '631643983@qq.com'
        # receivers = ['fralychen@gmail.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

        message = MIMEText(context, 'plain', 'utf-8')
        message['From'] = Header("info_center", 'utf-8')
        message['To'] = Header("administrator", 'utf-8')

        subject = 'Switch_info'
        message['Subject'] = Header(subject, 'utf-8')
        try:
           smtpObj = smtplib.SMTP()
           smtpObj.connect(self.mail_host, 25)    # 25 为 SMTP 端口号
           smtpObj.login(self.mail_user, self.mail_pass)
           smtpObj.sendmail(sender, receivers, message.as_string())
           print("邮件发送成功")
        except smtplib.SMTPException:
           print("Error: 无法发送邮件")

完整代码地址

github:https://github.com/PyMt/Mm

108X108.jpg:[https://www.aliyun.com/activity/daily/cloud?userCode=tblliy78]

目录
相关文章
|
18天前
|
Python
Python编程获取当前日期的所属周日期信息
Python编程获取当前日期的所属周日期信息
36 1
|
9天前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
22 1
Python实用记录(十三):python脚本打包exe文件并运行
|
14天前
|
小程序 Python
利用Python编程提取身份证的信息
利用Python编程提取身份证的信息
16 2
|
20天前
|
Python
Python 脚本高级编程:从基础到实践
本文介绍了Python脚本的高级概念与示例,涵盖函数的灵活应用、异常处理技巧、装饰器的使用方法、上下文管理器的实现以及并发与并行编程技术,展示了Python在自动化任务和数据操作中的强大功能。包括复杂函数参数处理、自定义装饰器、上下文管理器及多线程执行示例。
35 5
|
17天前
|
IDE 开发工具 数据安全/隐私保护
Python编程--实现用户注册信息写入excel文件
Python编程--实现用户注册信息写入excel文件
14 1
|
23天前
|
安全 Python
Python脚本实现IP按段分类
【10月更文挑战第04天】
23 7
|
19天前
|
Python
用 Python 读取照片的 Exif 信息(顺便说说本人的一些想法)
用 Python 读取照片的 Exif 信息(顺便说说本人的一些想法)
41 2
|
27天前
|
机器学习/深度学习 人工智能 运维
自动化运维的魔法:如何利用Python脚本提升工作效率
【9月更文挑战第29天】在数字时代的浪潮中,IT运维人员面临着前所未有的挑战和机遇。本文将通过深入浅出的方式,介绍自动化运维的基本概念、核心价值以及使用Python脚本实现自动化任务的方法。我们将从实际案例出发,探讨如何利用Python简化日常的系统管理任务,提高运维效率,并展望自动化运维的未来趋势。无论你是初学者还是有经验的运维专家,这篇文章都将为你开启一扇通往高效工作方式的大门。
41 2
|
6天前
|
Python
Python实现系统基础信息
Python实现系统基础信息
19 0
|
10天前
|
Java Python
如何通过Java程序调用python脚本
如何通过Java程序调用python脚本
11 0