Skip to content

指令

  1. @DIR 当前所在的目录路径,例:

    pring "目录",@DIR
    

  2. @FILENAME 当前脚本的名字,例:

    print "file:",@FILENAME
    

  3. @deprecated 将当前脚本标记为不推荐使用,可以放在脚本的任意位置,但是最好是放在脚本的最前面,例:

    @deprecated "Use '@load foo' instead"
    

  4. @load 加载指定的zeek脚本,指定的路径为相对路径,如果文件后缀名为.zeek那就不需要指定文件扩展名,文件名不能包含空格。如果指定的是文件名,zeek就会直接加载相应的文件,如果是目录的话就加载目录下的 load.zeek件,例:

    @load policy/misc/capture-loss
    
    @load tuning/defaults
    
    已经加载以后再进行加载不是错误 (emmmm我写的就是两个个脚本互相引用的过程中一人加载了一次其他的脚本然后报错了,所以我觉得这个文档在忽悠我),因为会被忽略

  5. @load-plugin 使用指定的插件名字激活动态的插件,指定的插件必须位于zeek的搜索路径内,例:

    @load-plugin Demo::Rot13
    
    zeek默认激活所有在搜索路径内的动态插件,文档说还有个裸模式(这个应该就是不加载插件之类的扩展,具体也没说),这个裸模式启动的就必须使用load-plugin进行激活插件或者使用指定完整插件名或将其加入到环境变量中,例:
    @load-plugin Demo::Rot13
    

  6. @load-sigs 这玩意和@load差不多,区别就是一个加载的插件一个加载的是签名文件(我也不知道签名文件是啥,文档也没说,就知道后缀名是sig),例:
    @load-sigs base/protocols/ssl/dpd
    
  7. @unload 指定我们不想加载的zeek脚本,如果脚本已经被加载这个指令就不生效了,例:
    @unload policy/misc/capture-loss
    
  8. @prefixes 指定在查找文件时自动加载的文件名前缀,前缀不能包含任何空格,例:

    @prefixes = cluster
    
    前缀能使用多个,看起来就像是起外号,随便起,例:
    @prefixes += cluster-manager
    

  9. @if 指定的表达式必须是bool类型,我没看出来和正常的if有什么区别,例:

    @if ( ver == 2 )
        print "version 2 detected";
    @endif
    

  10. @ifdef 文档说这玩意和@if相似(没说他俩有什么区别),例:
    @ifdef ( pi )
        print "pi is defined";
    @endif
    
  11. @ifndef 这个玩意和上面的就是相反的,例:

    @ifndef ( pi )
        print "pi is not defined";
    @endif
    
    @else 能加载@if、@ifdef、@ifndef后面,例:
    @ifdef ( pi )
        print "pi is defined";
    @else
        print "pi is not defined";
    @endif
    

  12. @endif @if, @ifdef, 或者 @ifndef需要用.@endif来终止

  13. @DEBUG 不能直接在用户脚本中使用此伪指令。在内部,交互式调试器功能(zeek -d)使用了该功能,该功能允许随意解析和评估任意表达式,而不是将其合并到由解析脚本文件形成的常规Zeek语法树中

Comments