Netmiko脚本无法获取迈普交换机完整running-config求助
解决迈普交换机Netmiko备份仅获取部分配置的问题
问题原因
迈普交换机的分页机制与思科设备存在差异,使用cisco_ios作为device_type时,Netmiko默认的分页处理逻辑无法正确识别迈普的---MORE---提示符,导致仅返回分页前的内容。
解决方案
1. 提前关闭设备分页
迈普交换机通常支持通过命令关闭分页,在执行show running-config前先发送关闭分页的命令,让设备直接返回完整配置:
from getpass import getpass from netmiko import ConnectHandler from datetime import date today = date.today() username = input('Enter your SSH username: ') password = getpass() with open('myswitches') as f: ip_lines = f.read().splitlines() print(ip_lines) for device in ip_lines: CE = { 'device_type': 'cisco_ios', 'ip': device, 'username': username, 'password': password } net_connect = ConnectHandler(**CE) # 关闭迈普设备分页,若terminal length 0无效可尝试no paging net_connect.send_command("terminal length 0") running_config = net_connect.send_command("show running-config", read_timeout=500) with open(f'/root/networklab/maipu/maipu-running-config-{today}.txt', "w") as outfile: outfile.write(running_config.lstrip()) print(f'Backup completed for {device}') net_connect.disconnect()
2. 使用基于时间的命令发送方法
如果关闭分页的命令无效,可改用send_command_timing替代send_command,该方法通过时间等待而非正则匹配提示符,更适配非标准设备的分页逻辑:
# 替换原有的send_command行 running_config = net_connect.send_command_timing("show running-config", read_timeout=500)
3. 自定义设备类型(进阶)
如果上述方法仍不理想,可自定义迈普设备的Netmiko配置,继承cisco_ios的基础配置并修改分页匹配规则:
from netmiko.cisco.cisco_ios import CiscoIosBase class MaipuSwitch(CiscoIosBase): def __init__(self, **kwargs): super().__init__(**kwargs) self.ansi_escape_codes = True self.prompt_pattern = r'[>#]' # 自定义迈普的分页匹配 self.more_pattern = r'---MORE---' # 使用自定义设备类型 CE = { 'device_type': 'maipu_switch', 'ip': device, 'username': username, 'password': password, 'device_class': MaipuSwitch }
补充说明
思科Nexus设备可正常运行是因为Netmiko对思科系列设备的分页逻辑适配完善,而迈普设备无专属device_type,需手动调整适配逻辑。
内容的提问来源于stack exchange,提问作者brancott
相关产品推荐
相关产品推荐

