千家信息网

使用netmiko模块连接H3C设备(闭坑——H3C设备的分

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,最近一直在测试Python中通过ssh协议连接huawei、h4c等网络设备的paramiko和netmiko模块。为什么选用这两个自己去网上找答案。有关paramiko模块连接网络设备的例子和遇到的
千家信息网最后更新 2025年12月01日使用netmiko模块连接H3C设备(闭坑——H3C设备的分

最近一直在测试Python中通过ssh协议连接huawei、h4c等网络设备的paramiko和netmiko模块。为什么选用这两个自己去网上找答案。
有关paramiko模块连接网络设备的例子和遇到的问题,烦请参考:https://blog.51cto.com/chier11/2116155
本文只介绍使用netmiko模块连接H3C网络设备,并成功闭坑:h4c分屏显示的问题。
发发牢骚:netmiko连接huawei设备的时候,在netmiko模块中会自动去掉分屏显示功能,意思就是说所有大量信息全部显示出来,举例:display interface brief,查看400多端口的信息,系统会分屏显示,但是在netmiko的huawei模块中默认设置了取消分屏显示的指令,如下:screen-length 0 temporary(华为取消分屏显示的命令)


from __future__ import print_functionfrom __future__ import unicode_literalsimport timeimport refrom netmiko.cisco_base_connection import CiscoBaseConnectionfrom netmiko.ssh_exception import NetMikoAuthenticationExceptionfrom netmiko import logclass HuaweiBase(CiscoBaseConnection):    def session_preparation(self):        """Prepare the session after the connection has been established."""        self._test_channel_read()        self.set_base_prompt()        self.disable_paging(command="screen-length 0 temporary")        # Clear the read buffer        time.sleep(0.3 * self.global_delay_factor)        self.clear_buffer()    def config_mode(self, config_command="system-view"):        """Enter configuration mode."""return super(HuaweiBase, self).config_mode(config_command=config_command)

这里大概猜测了下,为什么在netmiko模块在huawei的连接中有取消分屏显示功能的命令,而H3C设备没有呢,经过和厂家沟通发现,华为设备的取消分屏显示功能可以针对用户设置,而且是临时。举个例子:一个user用户登录华为设备后执行取消分屏显示命令后对设备中其他用户没影响(其他用户还是分屏显示),当user用户退出ssh的时候该用户的分屏显示功能会自动恢复,就像定义了:进入自己家目录的环境一样方便强大。而H3C网络设备的分屏显示针对的是全局设备,而且并不是进入、退出环境那样临时性生效一样。那么如何解决这种坑呢,经过多次网上查找和多次测试,终于完美实现一次性显示完整的输出大量信息
if "---- More ----" in outp:
outp += conn1.send_command_timing(
' \n', strip_prompt=False, strip_command=False, normalize=False
) ###遇到more,就多输入几次个空格,normalize=False表示不取消命令前后空格
代码如下,


from netmiko import ConnectHandlerfrom netmiko.ssh_exception import NetMikoTimeoutExceptionfrom netmiko.ssh_exception import NetMikoAuthenticationExceptiondef Get_CRC():    try:        pynet1 = {        'device_type': "hp_comware",        'ip': "10.10.10.10",        'username': "CTyunuser",        'password': "P@ssw0rd6900",        }        conn1 = ConnectHandler(**pynet1)        cmd='display counters inbound interface '        #cmd = 'display interface brief \n'        outp=conn1.send_command_timing(cmd)        if "---- More ----" in outp:            outp += conn1.send_command_timing(                '            \n', strip_prompt=False, strip_command=False, normalize=False            )      *###遇到more,就多输入几次个空格,normalize=False表示不取消命令前后空格*。        outp1 = outp.split("\n")        print (outp1)    except (EOFError,NetMikoTimeoutException):        print('Can not connect to Device')    except (EOFError, NetMikoAuthenticationException):        print('username/password wrong!')    except (ValueError, NetMikoAuthenticationException):        print('enable password wrong!')if __name__=="__main__":     Get_CRC()

以上是在实际中对华为和华三厂家的命令使用中的区别总结。如有不妥之处烦请大家指正。

设备 模块 命令 用户 功能 空格 网络 网络设备 华为 信息 例子 厂家 时候 是在 环境 问题 测试 输入 强大 不妥 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 超市网络安全防护 right数据库是什么意思 网络安全策略研究报告怎么写 数据库如何存储到内存卡 阿里巴巴网络安全风险 软件开发模型制作教程 餐饮蔬菜配送软件开发 关系型数据库数据表能否重命名 电脑如何连接服务器共享盘 plsql数据库连接数查询 软件开发多久能完成 一个数据库可以创建多个数据吗 服务器系统装好后需要装数据库吗 信创为什么要用arm服务器 数据库技术课程设计图文报告 为啥5g手机无法连接服务器 济南互联网科技有限公司 数据库大数据ppt 软件开发专业哪家不错 网络安全教育宣传工作总结报告 服务器画图工具指令 房乐网络技术有限公司 企业网络安全学习内容 网络安全行业市盈率平均值 国家网络安全网人工电话 服务器管理员ip设置 梦幻西游免费转服哪些服务器好 服务器的管理模式 初识数据库ppt 为啥5g手机无法连接服务器
0