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

如何将含hitcnt=0的ACL列表整理为指定格式CSV文件?

把ACL整理为指定格式CSV的方法

手动处理步骤

如果ACL条目数量不多,手动整理即可:

  1. 分组归类:先把每个object-group对应的条目归为一组。开头不带缩进的行是组名(比如Jerry、Jason),下面缩进的行就是该组对应的源条目。
  2. 提取源地址/子网:
    • 遇到host x.x.x.x格式,直接提取后面的IP地址,比如host 192.168.1.2提取为192.168.1.2
    • 遇到子网+掩码格式(比如192.168.1.0 255.255.255.0),直接保留这个组合
  3. 拼接成CSV行:以组名为开头,后面跟每个提取出的源,用逗号分隔,一行对应一个组。

按照你提供的原始ACL,整理后的CSV内容为:

Jerry,192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4
Jason,2.2.2.2,192.168.1.0 255.255.255.0,3.3.3.3

脚本自动处理(适合大量ACL)

如果ACL条目较多,用Python脚本自动解析更高效:

import re

# 替换为你的实际ACL内容
acl_content = """access-list outside line 1 extended permit tcp object-group Jerry host 10.10.10.1 eq 7030 0x1a9153aa 
  access-list outside line 1 extended permit tcp host 192.168.1.1 host 10.10.10.1 eq 7030 (hitcnt=6) 0x3b6b876b 
  access-list outside line 1 extended permit tcp host 192.168.1.2 host 10.10.10.1 eq 7030 (hitcnt=0) 0x592c1755 
  access-list outside line 1 extended permit tcp host 192.168.1.3 host 10.10.10.1 eq 7030 (hitcnt=0) 0x8cd36041
  access-list outside line 1 extended permit tcp host 192.168.1.4 host 10.10.10.1 eq 7030 (hitcnt=17) 0x8c336546
access-list outside line 2 extended permit tcp object-group Jason host 10.10.10.5 eq 3051 0x4e3c0d1d 
  access-list outside line 2 extended permit tcp host 2.2.2.2 host 10.10.10.5 eq 3051 (hitcnt=0) 0xfeb14ea6 
  access-list outside line 2 extended permit tcp 192.168.1.0 255.255.255.0 host 10.10.10.5 eq 3051 (hitcnt=0) 0xfafda7ae 
  access-list outside line 2 extended permit tcp host 3.3.3.3 host 10.10.10.5 eq 3051 (hitcnt=10) 0xaed11ed5"""

group_map = {}
current_group = None

# 逐行解析ACL内容
for line in acl_content.splitlines():
    line = line.strip()
    if not line:
        continue
    # 匹配组名行
    group_match = re.search(r'object-group (\w+)', line)
    if group_match:
        current_group = group_match.group(1)
        group_map[current_group] = []
        continue
    # 匹配源地址(host IP 或 子网+掩码)
    src_match = re.search(r'tcp (host \S+|\S+ \S+) host', line)
    if src_match and current_group:
        src = src_match.group(1)
        # 去除host前缀,仅保留IP
        if src.startswith('host '):
            src = src.replace('host ', '')
        group_map[current_group].append(src)

# 生成CSV格式内容
csv_lines = [f"{group},{','.join(src_list)}" for group, src_list in group_map.items()]

# 打印结果,如需写入文件可取消下方注释
print('\n'.join(csv_lines))
# with open('acl_result.csv', 'w') as f:
#     f.write('\n'.join(csv_lines))

运行脚本后会直接输出符合要求的CSV内容,也可以将结果写入文件保存。

内容的提问来源于stack exchange,提问作者CrossingTheRoad2020

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:06:18