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

如何在Zeek的main.zeek中获取shell脚本传入的pcap文件名?

获取Zeek处理的PCAP文件名方法

先纠正你的错误定义

你写的global filename: function packet_source():完全无效,原因有两点:

  • packet_source()是Zeek的内置函数,默认已经可用,不需要手动声明为全局函数
  • 这个写法不符合Zeek的语法规则,函数声明格式错误

正确实现步骤

  1. 无需手动加载base/bif/zeek.bif.zeek,该模块是Zeek默认加载的基础模块,不用额外引入
  2. 直接调用packet_source()即可获取当前处理的PCAP文件完整路径,建议在初始化事件中调用,确保在数据包处理前拿到文件名

示例代码(main.zeek)

# 在Zeek初始化完成后触发的事件,适合获取PCAP文件名
event zeek_init() {
    # 获取PCAP文件的完整路径
    local full_path = packet_source();
    
    # 拆分路径,提取纯文件名(比如从"/tmp/test.pcap"得到"test.pcap")
    local filename = split_path(full_path)[1];
    
    # 打印文件名到控制台
    print fmt("正在处理的PCAP文件: %s", filename);
    
    # 可选:将文件名存入全局变量,供其他脚本或事件使用
    global current_pcap = filename;
}

补充说明

  • packet_source()返回的是你在shell命令中指定的$i的完整路径(如果$i是相对路径,返回的就是相对路径)
  • 如果需要在其他事件(比如connection_new)中使用文件名,直接引用之前定义的全局变量current_pcap即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:05:36