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]

目录
相关文章
|
28天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
14天前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
56 7
21个Python脚本自动执行日常任务(2)
|
3天前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
29 5
|
21天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
27 7
|
26天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
18天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
17天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
5天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
98 80
|
24天前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
134 59