Bro脚本语法5-指令(Directives)
来源:互联网 发布:淘宝如何添加子账号 编辑:程序博客网 时间:2024/04/29 18:08
Bro脚本语法5-指令(Directives)
@(教程)[Bro]
Bro 脚本语言指令的概念有点类似于C语言中的宏,他会在脚本执行之前对脚本进行处理,比如哪些脚本会被加载,脚本中的哪几行会被执行等等,哪些指令展开后得到特定的字符串等等
@DEBUGTODO
@DIR
当前脚本的路径
Example:
print "Directory:", @DIR;
@FILENAME
文件名或当前的脚本
Example:
print "File:", @FILENAME;
@load
从脚本文件搜索路径加载脚本。如果文件名以.bro结尾,可以不加扩展名(不能有空格)
例子中 Bro 会加载脚本 “policy/misc/capture-loss.bro”(BROPATH 环境变量中搜索):
@load policy/misc/capture-loss
如果@load后面是个路径而不是文件名,则会查找路径中的load.bro脚本
这样的话就避免了加载的时候加载不全,也避免了写一大推的@load语句
@load-plugin
通过插件名启用一个插件搜索路径(BRO_PLUGIN_PATH)中的动态插件
@load-plugin Demo::Rot13
默认情况下,bro 会自动启用所有能用的插件,在bro 模式下(bro -b),插件必须通过这个指令手动启动,或者在命令行中指定
bro Demo::Rot13
或者通过设置环境变量 * BRO_PLUGIN_ACTIVATE* 来启用
@load-sigs
类似与load,不过载入的是一个签名(signature)文件,如果文件是以.sig结尾的,可以省略扩展名,
例子中 Bro will 将加载签名文件 “base/protocols/ssl/dpd.sig”:
@load-sigs base/protocols/ssl/dpd
文件的格式参考 Signature Framework 的文档
@unload
指定不载入某个脚本,如果这个脚本已经被载入了,那这个语句将不起作用,如果没被载入,那以后的载入语句也都将不起作用
例子: 如果 “policy/misc/capture-loss.bro” 还没被载入, 那么Bro将不会载入这个脚本
@unload policy/misc/capture-loss
@prefixes
在自动搜索加载脚本的时候指定脚本前缀
指定前缀
@prefixes = cluster
增加一个前缀
@prefixes += cluster-manager
Bro会自动加载相关的脚本
策略是去掉路径名,前面加上一个点,在再前面加上一个prefixes,然后搜索并加载这个文件
比如 bro 加载了一个 local.bro的脚本,同时指定了一个test的prefiex前缀,那么bro将会搜索并加载 test.local.bro的脚本
在命令行中可以通过 -p 来指定
@if
@if
@else
@endif
三个搭配使用,要求是bool表达式
Example:
@if ( ver == 2 ) print "version 2 detected";@endif
@ifdef
不做解释了
Example:
@ifdef ( pi ) print "pi is defined";@endif
@ifndef
Example:
@ifndef ( pi ) print "pi is not defined";@endif
@else
搭配 “@if”, “@ifdef”, or “@ifndef”. 的可选项
Example:
@ifdef ( pi ) print "pi is defined";@else print "pi is not defined";@endif
@endif
搭配 “@if”, “@ifdef”, or “@ifndef”. 的必选项
- Bro脚本语法5-指令(Directives)
- Bro脚本语法3-属性(Attributes)
- Bro脚本语法2-数据类型
- 指令(directives)
- Bro脚本语法6-日志文件(Log Files)
- bro脚本语法1-操作符
- 【Java.Web】JSP —— 语法基础 —— JSP指令Directives(page include taglib)
- Bro脚本语法4-声明和语句(Declarations and Statements)
- angular js指令(directives)及其例子
- 对指令(directives)的认识
- Verilog编译指令(Compiler directives)
- 【Tools.Redis】指令 - directives
- Angularjs指令directives
- bro脚本实例讲解
- 【nginx-rtmp】05、指令(Directives)之 核心(Core)
- 【nginx-rtmp】08、指令(Directives)之 直播(Live)
- 【nginx-rtmp】09、指令(Directives)之 记录(Record)
- 【Oracle 优化器】SQL计划指令(SQL Plan Directives)
- special number(act book)二分模版在此
- arcgis server瓦片行列号计算
- React Native版Hello World
- JDK1.8 IdentityHashMap
- ToastUils
- Bro脚本语法5-指令(Directives)
- PHP的PDO简介和使用
- H264编码原理以及I帧B帧P
- 121. Best Time to Buy and Sell Stock
- Docker运行时,文件系统块大小不能是1024
- java-播放音频方式之一
- PHP的命名空间概述和定义
- JavaWeb 打包成exe执行文件, Installanywhere 2009安装和破解
- Bro脚本语法6-日志文件(Log Files)