@(教程)[bro]
bro 指令碼語言指令的概念有點類似於c語言中的巨集,他會在指令碼執行之前對指令碼進行處理,比如哪些指令碼會被載入,指令碼中的哪幾行會被執行等等,哪些指令展開後得到特定的字串等等
@debug
todo
@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」. 的必選項
sh 指令碼語法
介紹 1 開頭 程式必須以下面的行開始 必須方在檔案的第一行 bin sh 符號 用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用 bin sh來執行程式。當編寫指令碼完成時,如果要執行該指令碼,還必須使其可執行。要使編寫指令碼可執行 編譯 chmod x filename 這樣...
Shell指令碼語法
定義單變數 p name kang 使用單變數 echo p name js 輸出kang.js echo p name.js 輸出kang.js cp p name.js copy.js 命令1 命令2 如果左邊的 命令1 執行成功,那麼右邊的 命令2 才會被執行。命令1 命令2 與 相反。如果 ...
shell指令碼 語法
條件測試 test 命令test 可以測試乙個條件是否成立,如果測試條件為真,則該命令的exitstatus為0,反之,exitstatus為1。注意 命令 各引數之間應該用空格隔開,以 結尾。但是 不是命令。測試命令 d dir 如果dir存在並且是乙個目錄則為真 f file 如果file存在並...