网络设备配置对比
#!/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