TCL MIB Browser

Tcl-MIBBrowser 是免費 (free) 開源 (opensource) 的軟體, source code 放在 GitHub
核心的 model 使用Net-SNMP, 將SNMP apps (snmpget, snmpset, snmpwalk...)編譯成TCL的模組
net-snmp-tcl 再搭配 TCL/TK 就可以拼湊出想要的功能與界面,也能快速的跨平台開發
目前主要是在Ubuntu x86_64 上開發與測試,以下附上一些目前進度與功能介紹

這隻程式有用到 8.6 版的指令,Ubuntu 14.04 預設就裝好了
使用 Windows 的可以用 Tclkit 執行,或是直接下載打包好的執行檔玩玩看
執行檔下載 : 壓縮檔包含主程式和 netsnmp mib

初次開啟時要先設定MIB資料夾,點選"MIB Setting"按鈕



可以設定 MIB 資料夾與顯示模式

目前只支援一個資料夾下所有 MIB files, 以netsnmp的參數表示就是( -m all -M $DIR )
所以必須把所有要用到的檔案放到同一個資料夾


讀後後就會長出 MIB tree, MIB Info 可以查詢各個 OID 的內容和語法


接下來要設定 protocol, 點選主視窗的 "SNMP Setting"按鈕


有用過 netsnmp command line 的話應該很熟悉這些參數, "-B" 是加在net-snmp-tcl裡的功能目前在 Linux 上測試有 bug,先鎖住
下方 -O 參數設定查詢結果的樣式, 若都不和用可選 User defined 輸入參數, 其他 UI 沒有用到的參數也能一起輸入,例如:以加入" -Ih "輸出值時就不會使用"DISPLAY-HINT", " -IJ"則是無視MIB file,直接輸出原始格式

若選用的是 snmpv3 則會跳出 snmpv3 設定視窗,由於v3的設定比較多,所以提供了 Load/Save 的功能

若選取了下方"Use Diffie-Hellman"將會無視 Authentication 與 Privacy的設定
Diffie-Hellman 的運算方式可以參考 這篇



設定完成後在  MIB tree 選取 mib 後按滑鼠右鍵就能開啟選單
前 4 個為常見的 snmp 指令,最後一個 "dump OCTET" 能把"OCTET string"格式的結果直接匯出 binary file. 例如: docsBpi2CmtsCACert 這隻 mib 的內容是 X509 DER-encoded Certificate Authority, 若只是印出 HEX String,不方便查看, 使用"dump OCTET"匯出檔案後就能用其他軟體查看 (要用 TCL 硬上 也是可以的 XD)



讀取結果將顯示在 Result 裡


上方選單:
Result: 開啟 "Auto clear"會在每次 查詢 / 設定 結束後清除Result視窗


View:
螢幕太小時,嫌 MIB Info 太佔空間是可以關掉的

關掉後可以多看幾行結果


Option:
可以設定 Search 的方式
順便提一下 Search 的功能
若搜尋的是字串可以向上或向下比對字串搜尋
若搜尋的是 oid 則是向上或向下跳到完全一致的 oid


若使用 TK8.6 就有設定字型的功能


若使用小於8.6的版本,可以在 config.ini 檔案自行修改
結束程式時會跳出視窗詢問是否要將目前工作的設定存起來
直接修改以下欄位下次啟動就會套用了
[global]
info_font="Droid Sans" 10 normal
result_font="Droid Sans" 12 normal
tree_font="Droid Sans" 12 normal


快捷鍵
除了各元件內建的之外另外加了以下功能
MIB tree (treectrl)
^s (Control-s) : snmpset
^w (Control-w)  :snmwalk
^g (Control-g) : snmpget
^n (Control-n) : snmpgetnext
'/' (slash) : 跳到search entry
'[' (bracketleft) : 向上搜尋
']' (bracketright) : 向下搜尋

Search (ttk::entry)
'[' (bracketleft) : 向上搜尋
']' (bracketright) : 向下搜尋
'Esc' (Escape) : 跳到MIB tree
'Enter' (Return) : 開始搜尋


12 則留言:

  1. 請問如何編譯,有空可以來個教學嗎?
    QQ 感恩!

    回覆刪除
    回覆
    1. 直接用 wish 執行 main.tcl就可以了

      刪除
    2. 我用windows 7, activetcl 8.5但用wish console執行main.tc有錯誤耶l

      刪除
    3. 請問錯誤訊息是什麼

      刪除
    4. 如果是出現 invalid command name "ttk::theme::tileqt::availableStyles" , 請直接把 lib 下的 tileqt0.5 移除試試看

      刪除
    5. 謝謝移除後就可以了,但介面多了F1 F2 F3 F4 ...F8等 TAB。 不知道是做甚麼用的

      刪除
    6. 執行 macro 的快速鍵, 先用選單的 Macro 錄製程一個檔案, 在 F1~F8 上按滑鼠右鍵選擇要跑的 macro, ctrl+滑鼠右鍵 可移除已綁定的 macro

      刪除
  2. PRIVATE MIB好像不支援耶,我有看到private目錄但點下去就沒了。
    我有把private MIB放進去。

    回覆刪除
    回覆
    1. 請問你mib file放在哪邊,點擊"MIB Setting"裡面有個欄位可以設定MIB DIR, 如果還是沒有請用 snmptranslate 指令(安裝net-snmp就有了)驗一下 mib file 有沒有問題
      snmptranslate -mall -M $MIB_DIR -Tz
      snmptranslate -mall -M $MIB_DIR 1
      這2個指令都會去 parse 所有 mib file, -Tz 會輸出所有的 oid mibname, 第2行是 oid 轉 name, 若mib file 有缺或是一些語法有問題會有錯誤訊息
      netsnmp 和 MG-SOFT MIB Browser 在解析 mib file 有些差異
      如果還是試不出來,假如你願意的話可以我可以試試看能不能用

      刪除
  3. 這個真的簡單又好用,請問如何秀table?

    回覆刪除
    回覆
    1. show table 是指像 mg-soft mibbrowser 的 tableview 嗎?
      目前沒這個功能,我現在遇到的 *Table mib通常都有一大堆index, index號碼又很長
      還在思考如何呈現匯比較好看

      刪除
    2. show table 是指像 mg-soft mibbrowser 的 tableview 嗎? yes!

      期待您的大作中..

      刪除