网络设备配置对比

技术网络设备配置对比 网络设备配置对比#!/usr/bin
# _*_ coding: UTF-8 _*_
# Copyright (c) 2021 GengYu.All rights reserved

网络设备配置对比

#!/usr/bin

# _*_ coding: UTF-8 _*_

#版权所有2021年耿宇。版权所有

# @耿宇创作

# @创建时间:2021/12/12

# @文件名:差异

# 打包命令pyinstaller -F包\diff

'''

'''

__作者__='管理员'

导入帕拉米科

导入时间

导入re、os、sys

导入difflib

导入文档测试

# 设备信息

ip='192.168.56.177 '

用户名='python '

密码='华为@123 '

# 定义函数获取当前配置

def get_config(ip ),用户名、密码):

ssh=paramiko.client.SSHClient()

嘘。set _ missing _ host _ key _ policy(paramiko。客户。autoaddpolicy())

ssh.connect(主机名=ip,端口=22,用户名=用户名,密码=密码)

打印(ip "登录成功")

cli=ssh.invoke_shell()

cli.send('N\n ')

时间。睡眠(0.5)

cli.send('屏幕长度0临时\ n’)

时间。睡眠(0.5)

cli.send('显示Cu \ n’)

睡眠时间(2)

dis_cu=cli.recv(999999).解码()

ssh.close()

返回dis_cu

#定义函数ssh_config,将脚本写入设备

def ssh_config(文件、ip、用户名、密码):

ssh=paramiko.client.SSHClient()

嘘。set _ missing _ host _ key _ policy(paramiko。客户。autoaddpolicy())

ssh.connect(主机名=ip,端口=22,用户名=用户名,密码=密码)

打印(IP“ssh配置登录成功")

cli=ssh.invoke_shell()

cli.send('N\n ')

时间。睡眠(0.5)

cli.send('屏幕长度0临时\ n’)

时间。睡眠(0.5)

f=打开(文件,“r”)

config _ list=f.readlines()

对于config_list:中的行

cli.send(线路)

时间。睡眠(0.5)

dis_this=cli.recv(999999).解码()

#打印(dis_this)

ssh.close()

# 调用获取配置赋值给输出

输出=get_config(ip ),用户名、密码)

#数据处理,使用正则表达式仅获取配置信息

配置=re。find all(r '(HUAWEIdisplay Cu[\ D \ D]HUAWEI $)',输出)

# 保存配置到本地文件文件一

base_path=os.getcwd()

使用打开(base_path r'\file1 ',' w ')作为f:

f.writelines(配置[0])

# 调用ssh_config,将netconf.txt配置写入设备

ssh_config('netconf.txt ',ip,用户名,密码)

# 再次读取配置,保存到本地为文件2

输出=get_config(ip ),用户名、密码)

配置=re。find all(r '(HUAWEIdisplay Cu[\ D \ D]HUAWEI $)',输出)

使用打开(base_path r'\file2 ',' w ')作为f:

f.writelines(配置[0])

# 配置对比

d=difflib .HtmlDiff()

#定义函数读取文件

def read_file(文件名):

尝试:

以f:打开(文件名为“r”)

返回f.readlines()

除了IOError:

打印(%s未找到该文件% filename)

系统出口(1)

# 定义函数比较文件,做配置对比,并保存文件为result.html

def compare_files(file1,file2,out_file):

file1_content=read_file(file1)

文件2 _内容=read_file(文件2)

d=difflib .HtmlDiff()

结果=d.make_file(file1_content,file2_content)

用打开(base_path r'\result.html ',' w ')作为f:

f.writelines(结果)

打印()

# 调用比较文件

compare _ files(base _ path r ' \ file 1 ',base_path r'\file2 ',base_path r'\result.html ')

# if __name__=='__main__':

# doctest.testmod()

#netconf.txt

[计]系统复制命令(系统的简写)

美国汽车协会

本地用户netconf密码不可逆-密码华为@123

本地用户netconf服务类型嘘

本地用户netconf级

q

嘘用户netconf身份验证类型的密码

嘘用户netconf服务类型snet config

snet config服务器启用

netconf

协议入站嘘端口830

犯罪

放弃

交换机配置:

int g1/0/0

un sh

int vlani 1

互联网协议(Internet Protocol的缩写)地址192.168.56.177

q

stel s e

用户一.四

授权美国汽车协会

嘘中的赞成

u p l 3

嘘用户大蟒

嘘用户大蟒身份验证密码

嘘用户python ser stel

美国汽车协会

本地用户大蟒密码不可逆-密码华为@123

本地用户大蟒服务类型嘘

本地用户大蟒用户组管理-ug

犯罪

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/147928.html

(0)

相关推荐

  • 怎么使用OUT参数

    技术怎么使用OUT参数本篇内容介绍了“怎么使用OUT参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我创建了下面这个过

    攻略 2021年11月8日
  • MySQL是如何保证数据不丢的

    技术MySQL是如何保证数据不丢的本篇内容主要讲解“MySQL是如何保证数据不丢的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL是如何保证数据不丢的”吧!

    攻略 2021年12月8日
  • README

    技术README READMEpycnblog
    博客园上传markdown文件 https://www.cnblogs.com/df888/p/11826480.html
    功能一键拖拽上传
    默认“未发布

    礼包 2021年12月14日
  • 如何理解django中板的继承及包含

    技术如何理解django中板的继承及包含如何理解django中板的继承及包含,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。模板的继承应用场景,比如一个网站的

    2021年10月21日
  • 安装实时监控mysql开源工具GitHub orzdba的操作方法

    技术安装实时监控mysql开源工具GitHub orzdba的操作方法这期内容当中小编将会给大家带来有关安装实时监控mysql开源工具GitHub orzdba的操作方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读

    攻略 2021年10月29日
  • debug P命令跟踪程序时遇到Int 21使用P命令的分析

    技术debug P命令跟踪程序时遇到Int 21使用P命令的分析debug P命令跟踪程序时遇到Int 21使用P命令的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能

    攻略 2021年11月11日