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

使用Netmiko从Cisco WLC CLI提取用户数据时,字典结构化处理出现字段混乱问题求助

Netmiko从Cisco WLC CLI提取用户数据时,字典结构化处理出现字段混乱问题求助

大家好,我现在遇到个棘手的问题:因为Cisco无线LAN控制器没有API支持,我只能用Python通过CLI连接来拉取数据。但Cisco WLC的CLI输出结构实在太不规整了,而且我目前只有Win10的实验环境,暂时没法用Ansible来简化处理。

我要拉取的是show netuser summary命令的输出,这个命令会列出所有在线用户的信息,表头包含Username、AP Name、WLAN ID、WLAN Name、Lifetime、Description这些字段,但部分字段(比如WLAN Name或者Description)里的空格经常导致拆分出错。

我用Netmiko库写了一段代码来拉取并结构化数据,想把输出转成字典格式方便后续操作,但结果不如人意,代码如下:

from netmiko import ConnectHandler
from netmiko import ConnectHandler, exceptions
import re

device= {
            'device_type': 'cisco_wlc_ssh',
            'ip': 'redacted',
            'username': 'redacted',
            'password': 'redacted',
            'port' : 22,
            "session_log":r'D:\Python Projects\Netmiko\WifiCLI\Netmiko_session_GNR_log',
            "session_log_file_mode": "append"
}

try:
    connect = ConnectHandler(**device)
    show_netuser_sum = connect.send_command("show netuser summary", expect_string=f'y/n')
    show_netuser_sum += connect.send_command_timing("y")
    show_netuser_sum = show_netuser_sum.strip().split("\n")
except (exceptions.ReadTimeout) as e:
    connect = ConnectHandler(**device)
    show_netuser_sum = connect.send_command("show netuser summary")
    show_netuser_sum = show_netuser_sum.strip().split("\n")

header_line = show_netuser_sum[3]
data_lines = show_netuser_sum[5:]

headers = re.split(r'\s{2,}', header_line.strip())

# Extract data
data = []
for line in data_lines:
    # Split the line based on multiple spaces
    split_line = re.split(r'\s{2,}', line.strip())
    
    if len(split_line) > len(headers):
        split_line[1] = ' '.join(split_line[1:3])
        split_line.pop(2)
        if len(split_line) > len(headers):
            split_line[3] = ' '.join(split_line[3:])
            split_line = split_line[:len(headers)]
    
    if len(split_line) < len(headers):
        split_line.insert(3, '')

    row_data = dict(zip(headers, split_line))
    data.append(row_data)

# Print the structured data
for row in data:
    print(row)

现在处理后的字典数据还是很乱,比如lifetime和description字段经常错位,我总共有13条用户记录,其中好几条(比如用户bcook的条目)都出现了这种字段对应错误的情况,有没有大佬能帮我看看问题出在哪?

备注:内容来源于stack exchange,提问作者karoks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:47:57