当前位置:   article > 正文

华为HCIE 编程自动化SSH、SFTP、Netconf实验_华为编程

华为编程

SSHSFTPNetconf

目录

SSH、SFTP、Netconf

实验需求:

实验拓扑:

过程思路:

具体步骤:

1(CLI)

2(Python)

结果验证:

终端工具SSH远程登录测试

python运行代码

dir命令查看备份效果

查看备份文件

查看G1/0/2的配置


实验需求:

1 编写程序,通过SSH和SFTP连接CE12800设备。

2 运行设备查询信息,下载设备配置文件,将文件保存在本地。

3 通过Netconf下发配置到接口G1/0/2。

实验拓扑:

 

 

 

过程思路:

1 实验设备准备SSH、SFTP、Neconf的CLI配置。

2 编写python代码。

具体步骤:

  • 1CLI

rsa   local-key-pair   create  

aaa

 local-user huawei password cipher Ruijie@123

 local-user huawei service-type ssh

 local-user huawei level 3

quit

user-interface vty 0 4

authentication-mode aaa

protocol inbound ssh

quit

ssh    user   huawei  authentication-type   password 

stelnet   server   enable 
ssh user 
haweui service-type all
ssh user huawei sftp-directory cfcard:
sftp server enable

netconf

protocol inbound ssh port 830

quit

 

 

 

  • 2Python

  1. # -*- coding: utf-8 -*-
  2. # 定义NetConf操作的常量,用于后续的NETCONF操作
  3. from ncclient import manager
  4. from ncclient import operations
  5. #导入所需要的模块
  6. import paramiko  # 用于完成SSH功能的模块
  7. import time  # 提供时间等待功能的模块
  8. # 设备参数
  9. ip = '192.168.0.88'  # 设备IP地址
  10. port = '830'  # NetConf端口,默认为830
  11. user = 'huawei'  # 登录用户名
  12. password = 'Ruijie@123'  # 登录密码
  13. filename = 'cmd.txt'  # 配置文件名,用于读取配置命令
  14. ####################################################### SSH
  15. # 定义一个名为HCIE的类,用于自动化SSH和SFTP操作
  16. class HCIE:
  17.     # 初始化方法,创建一个SSH连接并设置shell
  18.     def __init__(self):
  19.         self.ssh_inst = self.ssh_conn()  # 创建SSH连接
  20.         self.shell = self.ssh_inst.invoke_shell()  # 打开shell
  21.         self.send_cmd('screen-length 0 temporary\n'# 禁用命令历史记录
  22.     # 创建SSH连接的方法
  23.     def ssh_conn(self):
  24.         ssh_inst = paramiko.SSHClient()  # 创建一个SSH客户端对象
  25.         ssh_inst.set_missing_host_key_policy(paramiko.client.AutoAddPolicy())  # 设置自动添加主机密钥策略,以避免连接错误
  26.         ssh_inst.connect(hostname=ip,  # 连接到指定的主机地址和端口
  27.                          username=user,  # 使用指定的用户名进行连接
  28.                          password=password)  # 使用指定的密码进行连接
  29.         return ssh_inst  # 返回SSH客户端对象
  30.     # 关闭SSH连接的方法
  31.     def ssh_close(self, ssh_inst):
  32.         ssh_inst.close()  # 关闭SSH连接
  33.     # 发送命令到shell并返回结果的方法
  34.     def send_cmd(self, cmd):
  35.         self.shell.send(cmd)  # 将命令发送到shell
  36.         time.sleep(1# 等待1秒,确保命令已发送完毕
  37.         return self.shell.recv(9999).decode()  # 从shell接收数据,解码并返回结果
  38. ####################################################### SFTP
  39. # 定义一个操作函数,执行一系列任务
  40. def operation():
  41.     rcie = HCIE()  # 创建一个rcie对象,用于自动化SSH和SFTP操作
  42.     with open(filename) as f:  # 打开名为filename的文件,其中包含要执行的命令列表
  43.         cmd_list = f.readlines()  # 将文件中的命令读取为列表,每个命令占一行
  44.     for cmd in cmd_list:  # 对于文件中的每个命令
  45.         result = rcie.send_cmd(cmd)  # 使用rcie对象的send_cmd方法发送命令,并获取结果
  46.         print(result)  # 打印结果到控制台
  47.     rcie.send_cmd('save\ny\n'# 发送保存命令到交换机,并确认保存操作
  48.     rcie.ssh_close(rcie.ssh_inst)  # 关闭当前的SSH连接,释放资源
  49.     new_ssh = rcie.ssh_conn()  # 重新创建一个新的SSH连接,因为之前的连接已被关闭
  50.     sftp_inst = new_ssh.open_sftp()  # 使用新的SSH连接打开SFTP会话
  51.     sftp_inst.get('/vrpcfg.cfg', 'config_back.cfg'# 从交换机获取配置文件并保存到本地文件config_back.cfg中
  52.     rcie.ssh_close(new_ssh)  # 关闭SFTP会话和SSH连接,释放资源
  53. if __name__ == "__main__"# 确保这段代码只在直接运行时执行,而不是作为模块导入时执行
  54.     operation()  # 调用operation函数,执行自动化操作任务
  55. ####################################################### Netconf
  56.     # 定义函数huawei_connect,用于建立NETCONF连接
  57.     def huawei_connect(host, port, user, password):
  58.         # 使用ncclient的manager模块来建立NETCONF连接
  59.         return manager.connect(host=host,  # 设备IP地址或主机名
  60.                                port=port,  # 连接的端口,默认为830
  61.                                username=user,  # 登录用户名
  62.                                password=password,  # 登录密码
  63.                                hostkey_verify=False# 禁用主机密钥验证,这里设置为False是为了简化代码,实际生产中应启用主机密钥验证
  64.                                device_params={'name': "huawei"},  # 指定设备类型为华为,这会影响连接过程中的一些行为和参数设置
  65.                                allow_agent=False# 禁用NETCONF agent,设置为False表示不使用NETCONF agent
  66.                                look_for_keys=False# 禁用密钥查找,设置为False表示不自动查找密钥
  67.     # NETCONF发送XML数据,配置设备接口IP地址
  68.     CREATE_INTERFACE = '''<config>
  69.           <ethernet xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
  70.             <ethernetIfs>
  71.               <ethernetIf operation="merge">
  72.                 <ifName>GE1/0/2</ifName>
  73.                 <l2Enable>disable</l2Enable>
  74.               </ethernetIf>
  75.             </ethernetIfs>
  76.           </ethernet>
  77.           <ifm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
  78.             <interfaces>
  79.               <interface operation="merge">
  80.                 <ifName>GE1/0/2</ifName>
  81.                 <ifDescr>Config by NETCONF</ifDescr>
  82.                 <ifmAm4>
  83.                   <am4CfgAddrs>
  84.                     <am4CfgAddr operation="create">
  85.                       <subnetMask>255.255.255.0</subnetMask>
  86.                       <addrType>main</addrType>
  87.                       <ifIpAddr>192.168.2.1</ifIpAddr>
  88.                     </am4CfgAddr>
  89.                   </am4CfgAddrs>
  90.                 </ifmAm4>
  91.               </interface>
  92.             </interfaces>
  93.           </ifm>
  94.         </config>'''
  95. # 主函数,顺序执行
  96. if __name__ == '__main__'# 判断是否是直接运行此脚本,如果是则执行以下代码
  97.     # 调用huawei_connect函数,建立NETCONF连接
  98.     m = huawei_connect(ip, port, user, password)
  99.     # 通过NETCONF连接对象m,执行编辑配置的操作,目标是运行中的配置,并传入要应用的配置CREATE_INTERFACE
  100.     m.edit_config(target='running', config=CREATE_INTERFACE)

 

 

 

结果验证:

终端工具SSH远程登录测试

 

python运行代码

 

dir命令查看备份效果

 

查看备份文件

 

查看G1/0/2的配置

总结:本人立志做一个内容丰富且免费的专栏,如果本篇文章能够帮助到你,麻烦点赞加收藏。如有不足之处请私信或者评论告诉博主,谢谢!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/257558
推荐阅读
相关标签
  

闽ICP备14008679号