You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Netmiko中跳过命令输出的<---More--->

解决Netmiko连接Cisco ASA输出截断问题

要解决<---More--->导致的输出截断,最直接可靠的方法是关闭ASA的终端分页功能,以下是具体实现方案:

方法1:提前关闭分页(推荐)

在执行目标show命令前,发送terminal length 0命令,让ASA一次性返回所有输出,不再分页。修改后的代码如下:

import re
import netmiko 
import sys
import json

def get_results(ip, login, password):

    device = {
        'device_type': 'cisco_asa',
        'ip': ip,
        'username': login,
        'password': password,
        'secret': password,
        'global_delay_factor': 2
    }

    try:
        net_connect = netmiko.ConnectHandler(**device)
        # 关闭终端分页,让输出一次性返回
        net_connect.send_command("terminal length 0")
    except Exception as e:
        print("Ошибка при подключении:", e)
        return

    try:
        # 使用send_command即可自动等待命令执行完成
        output = net_connect.send_command("show aaa-server NPS_MFA_TEST")
        print(output)
    except Exception as e:
        print("Ошибка при выполнении команды:", e)
        net_connect.disconnect()
        return

    result = {}
    match_group = re.search(r"Server Group:\s+(\S+)", output)
    if match_group:
        result["Server Group"] = match_group.group(1)

    match_address = re.search(r"Server Address:\s+(\S+)", output)
    if match_address:
        result["Server Address"] = match_address.group(1)

    net_connect.disconnect()
    return json.dumps(result)

if __name__ == "__main__":
    if len(sys.argv) == 4:
        ip = sys.argv[1]
        username = sys.argv[2]
        password = sys.argv[3]
        result = get_results(ip, username, password)
        print(result)
    else:
        print("Неверное количество аргументов") 

方法2:自动处理分页交互(备选)

如果无法提前关闭分页,可以通过send_command_timing循环匹配<---More--->,自动发送空格翻页:

# 修改命令执行部分的代码
try:
    output = net_connect.send_command_timing(
        "show aaa-server NPS_MFA_TEST",
        strip_prompt=False,
        delay_factor=2
    )
    # 循环处理所有分页
    while "<---More--->" in output:
        # 发送空格继续加载后续内容
        output += net_connect.send_command_timing(" ", strip_prompt=False, delay_factor=2)
    print(output)
except Exception as e:
    print("Ошибка при выполнении команды:", e)
    net_connect.disconnect()
    return

方法1更简洁稳定,无需处理复杂的交互逻辑,优先推荐使用。


内容的提问来源于stack exchange,提问作者Данияр Данилов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:23:24