使用python对比华为设备配置是否改变(eNSP模拟器)

使用python对比华为设备配置是否改变(eNSP模拟器),第1张

概述实验拓扑:将路由器桥接到与Linux系统同一网段,保证可以Linux系统和路由器能够通信。要求:一共要制作两个函数:第一个函数用于获取设备配置(注意:华为设备只获取sysnamexxx到return之间的部分)。第二个函数每五秒获取一次设备配置,并计算配置的MD5值。如果和之前的MD5相同就打 实验拓扑:

将路由器桥接到与linux系统同一网段,保证可以linux系统和路由器能够通信。

要求:

一共要制作两个函数:
第一个函数用于获取设备配置(注意:华为设备只获取sysname xxx到return之间的部分)。
第二个函数每五秒获取一次设备配置,并计算配置的MD5值。如果和之前的MD5相同就打印MD5,如果不相同就打印告警并退出。

步骤:

1.在AR上配置SSH。(略)
2.创建dev_ssh.py文件,使用paramiko连接AR。

# 导入paramiko模块import paramikoimport time# 定义ssh的函数,方便调用def dev_ssh(ip, username, password, port=22, cmd='dis cu\n'):    ssh = paramiko.SSHClIEnt()    ssh.load_system_host_keys()    # 如果没有密钥,添加密钥    ssh.set_missing_host_key_policy(paramiko.autoAddPolicy())    ssh.connect(ip, port, username, password, timeout=5, compress=True)    command = ssh.invoke_shell()    # 保证dis cu能够一次将所有信息显示出来    command.send('screen-length 0 temporary\n')    # 输入命令    command.send(cmd)    time.sleep(2)    output = command.recv(65535)    x = output.decode('ascii')    # 返回shell界面显示的内容    return x# 本地进行测试if __name__ == '__main__':    print(dev_ssh('192.168.0.11', 'prin', 'Huawei@123'))

3.创建compare_md5.py文件,获取配置的MD5值并比较。

# 引入dev_ssh.py模块中的dev_ssh函数from dev_ssh import dev_ssh# 引入正则表达式的模块import re# 引入计算hash值的模块import hashlib# 引入time模块import time# 定义获取配置的函数def dev_get_config(ip, username='admin', password='Huawei@123'):    try:    # 调用dev_ssh函数得到配置信息        dev_config_raw = dev_ssh(ip, username, password)        # 使用正则表示匹配sysname --- return之前的配置信息        dev_config = re.findall('sysname[\s\S]+return', dev_config_raw)[0]        # 返回处理后的配置信息        return dev_config    except Exception:        return# 定义计算和比较MD5值的函数def check_diff(ip, username='admin', password='Huawei@123'):# 计算初始的MD5值,并赋值给before_md5变量    m = hashlib.md5()    m.update(dev_get_config(ip, username).encode())    before_md5 = m.hexdigest()    # 每隔5s检查重新计算一次MD5值,并与初始的MD5值进行对比    while True:        time.sleep(5)        m = hashlib.md5()        m.update(dev_get_config(ip, username, password).encode())        # 如果两次对比相同,打印出MD5值        if before_md5 == m.hexdigest():            print(before_md5)        # 如果两次对比不相同,在打印最新的MD5值的同时,退出循环,并且打印告警信息        else:            print(m.hexdigest())            print('MD5 value changed!')            break# 进行测试if __name__ == '__main__':    check_diff('192.168.0.11', 'prin')
查看结果:


在程序运行的时候,我们将配置做一定的改变,可以看到MD5值发生了改变,并且有对应的提示。

总结

以上是内存溢出为你收集整理的使用python对比华为设备配置是否改变(eNSP模拟器)全部内容,希望文章能够帮你解决使用python对比华为设备配置是否改变(eNSP模拟器)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1188468.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存