jupyter python paramiko 网络系统运维

news2025/1/23 3:50:21

概述

通过使用jupyter进行网络运维的相关测试

设备为H3C

联通性测试

import paramiko
import time
import getpass
import re
import os
import datetime


username = "*****"
password = "*****"
ip = "10.32.**.**"

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,username=username,
                       password=password,look_for_keys=False)
command = ssh_client.invoke_shell()
    
print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
print('已经成功登陆交换机' +" "+ ip)
    
#     # 关闭分屏显示
# command.send("Screen-len disable"+"\n")
#     # 获取配置信息
# command.send("display current-configuration | in sysname"+"\n")
# time.sleep(3)
#     # 输出配置信息
# output_config=command.recv(65535).decode()
# print(output_config)

获取配置信息 + 执行其他命令

在联通性测试ok后,可以在jupyter执行查看配置信息

command.send("Screen-len disable"+"\n")
    # 获取配置信息
command.send("display current-configuration | in sysname"+"\n")
time.sleep(3)
    # 输出配置信息
output_config=command.recv(65535).decode()
print(output_config)

关闭链接

ssh_client.close()

批量导出交换机配置

import paramiko
import time
import getpass
import re
import os
import datetime


username = "******"
password = "******"
f = open('*****.list')


# 创建备份目录
now = datetime.datetime.now()
now_date = now.date()
print("now date: " + str(now_date) + "\n")

path = "./config/"
os.chdir(path)

new_folder = str(now.date())+"-backup"
print("backup folder name: " + new_folder)


# 判断目录存在
if not os.path.exists(new_folder):
    os.makedirs(new_folder)
    print("backup folder created")
else:
    print("backup folder already exists")
os.chdir("../")



for line in f.readlines():
    ip = line.strip()

    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(hostname=ip,username=username,
                       password=password,look_for_keys=False)
    command = ssh_client.invoke_shell()
    
    print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
    print('已经成功登陆交换机' +" "+ ip)
    
    # 关闭分屏显示
    command.send("Screen-len disable"+"\n")
    # 获取配置信息
    command.send("display current-configuration"+"\n")
    
    time.sleep(3)
    # 输出配置信息
    output_config=command.recv(65535).decode()
    # print(output_config)
    
    # 交换机名称获取
    command.send("display current-configuration | in sysname"+"\n")
    time.sleep(2)
    swname=command.recv(65535).decode()
    # print(swname)
    print("")
    
    # 定义正则表达式
    pattern = r'(?<=<).*(?=>)'
    
    regex = re.compile(pattern)
    
    match = regex.search(swname)
    swname = match.group()
    print("SW Name: " + swname)
    print("")
    
    # 定义文件名
    file_name = match.group()+".cfg"
    print("Config file: " + file_name)
    print("")
    # 写入文件
    # w+ 覆盖写入
    # a+ 追加写入
    config_files = open("./config/"+ new_folder + "/" + file_name,"w+")
    print("writing from output_config to " + file_name + "\n") 
    config_files.write(output_config)
    time.sleep(3)
    config_files.close()
    ssh_client.close()
    print("Job successful: " + ip + " " + swname + " " + file_name + "\n" )
    

关于正则

# 定义正则表达式
pattern = r'(?:X|H|F)?GE1/0/[0-9].'

# https://www.jyshare.com/front-end/854/
# 在Python中,使用re模块匹配字符串"XGE1/0"、"GE1/0"、"HGE1/0"和"FGE1/0"可以通过构造一个正则表达式来实现。
# 这个正则表达式需要能够匹配这四种不同的模式,
# 它们的共同点是都以"GE1/0"结尾,但是可能有不同的前缀("X"、"H"、"F"或没有前缀)。

# 解释正则表达式:

# (?: ... ):非捕获组,表示组内的模式匹配后不会被单独捕获。
# X|H|F:表示匹配字符"X"或"H"或"F"。
# ?:表示前面的非捕获组是可选的,即可以出现0次或1次。
# GE:表示字符串中必须出现"GE"。
# 1/0:表示字符串结尾是"1/0"。

port_list1 = re.findall(pattern, port_list,re.S)
print(port_list1)

# print(output)
# 正则表达式,用于匹配接口及其媒体类型

pattern = r'display\s+interface\s+(FGE1/0/\d+|GE1/0/\d+|HGE1/0/\d+|XGE1/0/\d+).*?Media type is ([^,]+)'

# 正则表达式解释:

# display\s+interface\s+: 匹配 display interface 开头的文本,\s+代表一个或多个空白字符。
# (FGE1/0/\d+|GE1/0/\d+|HGE1/0/\d+|XGE1/0/\d+): 匹配指定的接口,\d+ 匹配一个或多个数字。
# .*?: 非贪婪匹配任何字符,直到遇到 Media type is。
# Media type is ([^,]+): 匹配 Media type is 之后的文本,直到遇到逗号为止。括号中的 [^,]+ 匹配一系列非逗号的字符。
# 由于您的示例文本中的每个接口行后都直接跟随着媒体类型,因此我们不需要re.DOTALL参数。


# 查找所有匹配项
matches = re.findall(pattern, output, re.DOTALL)
output1 = matches
print(output1)
# 打印匹配到的结果
for match in matches:
    interface, media_type = match
    print(f'Interface: {interface}, Media type: {media_type}')

关于pandas使用

import pandas as pd

# 将output1转换为DataFrame
df = pd.DataFrame(output1, columns=['Interface', 'Media Type'])

# 将DataFrame写入Excel文件
df.to_csv(file_name, index=False, encoding='utf-8')

# 设置显示最大行数和列数
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)

# 读取Excel文件
df1 = pd.read_csv(file_name)

# 打印DataFrame的内容
print(df1)

df1.to_excel(swname+".xlsx", index = False, sheet_name = swname)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1576250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相机标定——四个坐标系介绍

世界坐标系(Xw,Yw,Zw) 世界坐标系是一个用于描述和定位三维空间中物体位置的坐标系&#xff0c;通常反映真实世界下物体的位置和方向。它是一个惯性坐标系&#xff0c;被用作整个场景或系统的参考框架。在很多情况下&#xff0c;世界坐标系被认为是固定不变的&#xff0c;即它…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之四 简单视频倒放效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之四 简单视频倒放效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之四 简单视频倒放效果 一、简单介绍 二、简单视频倒放效果实现原理 三、简单视频倒放效果案例实现…

C++搭建深度学习的推理框架

我们的目的是:借助C++搭建一个类似于pytorch,tensorflow的深度学习框架,对标pytorch,tensorflow实现对应的功能。由于本人能力有限,下面本人将借助C++搭建一个简单的全连接神经网络,并且尝试解释里面的算子定义和计算图构建。 算子定义 回顾pytorch里面搭建的全连接神经网…

探索未来游戏:生成式人工智能AI如何重塑你的游戏世界?

生成式人工智能&#xff08;Generative AI&#xff09;正以前所未有的速度改变着各行各业的运作模式。其中&#xff0c;游戏产业作为科技应用的前沿阵地&#xff0c;正经历着前所未有的变革。本文将探讨生成式人工智能如何重塑游戏产业&#xff0c;以及这一变革背后的深远影响。…

Sora是什么?Sora怎么使用?Sora最新案例视频以及常见问题答疑

Sora 是什么&#xff1f; 2024年2月16日&#xff0c;OpenAI 在其官网上面正式宣布推出文本生成视频的大模型Sora 这样说吧给你一段话&#xff0c; 让你写一篇800字的论文&#xff0c;你的理解很可能都有偏差&#xff0c;那么作为OpenAi要做文生视频到底有多难&#xff0c;下面…

Linux设备深探:桥接硬件与软件的秘密通道

在Linux的世界里&#xff0c;"设备"这个词汇比你想象的要丰富和多彩得多。让我们一起来探索Linux设备的奥秘&#xff0c;理解它们是如何在Linux操作系统中发挥作用的。&#x1f427;✨ 1. 什么是Linux设备&#xff1f; 在Linux中&#xff0c;设备被看作是一种特殊的…

Day01-SHELL自动化编程-变量与特殊变量

Day01-SHELL自动化编程-变量与特殊变量 1.编程概述2.课程内容3.Shell编程语言必知必会4.编程语言分类&#xff08;按照执行方式&#xff09;-了解5.编程环境准备6.Shell脚本执行方式6.1概述6.2详解6.2.1 sh或bash6.2.1 .或source6.2.3 相对或绝对路径6.2.4 使用重定向符号执行脚…

iOS 17.5系统或可识别并禁用未知跟踪器,苹果Find My技术应用越来越合理

苹果公司去年与谷歌合作&#xff0c;宣布将制定新的行业标准来解决人们日益关注的跟踪器隐私问题。苹果计划在即将发布的 iOS 17.5 系统中加入这项提升用户隐私保护的新功能。 科技网站 9to5Mac 在苹果发布的 iOS 17.5 开发者测试版内部代码中发现了这项反跟踪功能的蛛丝马迹…

Spring源码解析-容器基本实现

spring源码解析 整体架构 defaultListableBeanFactory xmlBeanDefinitionReader 创建XmlBeanFactory 对资源文件进行加载–Resource 利用LoadBeandefinitions(resource)方法加载配置中的bean loadBeandefinitions加载步骤 doLoadBeanDefinition xml配置模式 validationMode 获…

海外媒体宣发,穿透与世界的交流 - “保姆级”教程 - 大舍传媒

1. 引言 在当今高度信息化的世界&#xff0c;境外媒体宣发已经成为企业、品牌和政府机构推广自身形象、扩大影响力的重要手段。如何在国际舞台上有效传播信息&#xff0c;提高国际知名度&#xff0c;成为了许多组织面临的重要课题。大舍传媒凭借多年的境外媒体宣发经验&#x…

数据恢复与数据取证的便携工具:PC-3000 Portable III

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、前沿专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复同行&#xff0c;提供实验室建设方案&#xff0c;包含数据恢复与数据取证硬件…

elementPlus el-table动态列扩展及二维表格

1、循环列数据源&#xff0c;动态生成列 <template><div><el-table ref"table" :data"pageData.tableData" stripe style"width: 100%"><el-table-column v-for"column in pageData.columns" :key"column.p…

SMATool 程序:VASP + QE + 零温 + 有限温度 + 拉伸、剪切、双轴、维氏硬度的计算

分享一个 SMATool 程序&#xff1a;用于评估材料在零温&#xff08;使用密度泛函理论&#xff09;和有限温度&#xff08;使用从头算分子动力学&#xff09;下的拉伸、剪切、双轴和压痕强度&#xff08;维氏硬度&#xff09;。 感谢论文的原作者&#xff01; 关键词&#xff…

身份证实名认证接口的价格一般是多少呢?基于PHP身份核验接口

身份证实名认证接口分为身份证二要素、三要素、三要素人像核验接口&#xff0c;被广泛的应用于婚恋、交友、电商等等一系列行业领域&#xff0c;身份证实名认证需要实时数据&#xff0c;对于数据源来说也需要可靠&#xff0c;那么&#xff0c;身份证实名认证的价格是不是很贵呢…

HCLR-Net: 混合对比学习正则化与局部随机扰动用于水下图像增强

论文地址&#xff1a;https://doi.org/10.1007/s11263-024-01987-y 源码&#xff1a;https://github.com/zhoujingchun03/HCLR-Net 摘要&#xff1a; 由于水下环境复杂多样&#xff0c;导致光吸收、散射和色彩失真等严重退化现象&#xff0c;因此水下图像增强是一项重大挑战…

实战-解决编码问题

前言 在数据处理过程中,乱码是常见的一种现象,它归属于编码问题. 编码问题处理不当会导致解析错误和数据丢失的严重后果.文章主要是展示如何用Python的chardet库或Notepad的使用来解决编码问题. 常见表现 乱码 文本数据在屏幕上显示为不可识别的符号、方框、问号等&#xff0c;…

ES入门十四:分词器

我们存储到ES中数据大致分为以下两种&#xff1a; 全文本&#xff0c;例如文章内容、通知内容精确值&#xff0c;如实体Id 在对这两类值进行查询的时候&#xff0c;精确值类型会比较它们的二进制&#xff0c;其结果只有相等或者不想等。而对全文本类型进行等值比较是不太实现…

CVE漏洞是什么,如何对其进行针对性的防护

CVE&#xff08;Common Vulnerabilities and Exposures&#xff09;漏洞是一个网安技术术语&#xff0c;用于描述和标识信息安全领域的已知漏洞和安全风险。CVE是一个公开的列表或数据库&#xff0c;它为各种公开知晓的信息安全漏洞和风险提供了标准化的名称。 每个CVE标识符都…

Java-类型转换

Java数据类型转换的规则掌握后&#xff0c;将使我们对以后的学习事半功倍&#xff0c;下面是我列出的一些重点。 类型转换 由于Java是强类型语言&#xff0c;所以要进行有些运算的时候&#xff0c;需要用到类型转换。底到高依次是&#xff1a;byte,short,char->int->lo…

ThinkPHP审计(2) Thinkphp反序列化链5.1.X原理分析从0编写POC

ThinkPHP审计(2) Thinkphp反序列化链子5.1.X原理分析&从0编写POC 文章目录 ThinkPHP审计(2) Thinkphp反序列化链子5.1.X原理分析&从0编写POC动态调试环境配置Thinkphp反序列化链5.1.X原理分析一.实现任意文件删除二.实现任意命令执行真正的难点 Thinkphp反序列化链5.1.…