任何一個收集資訊並呈現的程式都需要具有三部分:
- 蒐集資訊並整理
- 將整理資訊儲存
- 將儲存的資訊取出應用
藉此去切割不同module該設計的功能,為了讓不同module可以順利串接,就需要制定一套共用的語言命名邏輯。
網管構思最難的不是在於寫Code,而是訂一套Rule,這Rule要能協調三部分順利運行。
蒐集資訊並整理
這部份使用CLASS,讓網路設備變成類別,可以依照輸入的設備清單變成一個個實例。實例中包含連線、下指令、過濾出資訊。
這部份以Netmiko作為主力,輸入的設備清單也建議轉成Netmiko友善的格式,白話就是Netmiko連線需要什麼資訊、下指令。
將整理資訊儲存
整個程式最耗費資源與時間的部分就是蒐集資訊並整理,因此若是將資訊妥善儲存下來,即便略過第一部分,也可以從儲存的資訊去還原第一部分得到的結果。
比較通用記錄的方式是: 時間、設備IP、指令、結果。
以設備清單加上執行時間點作為資料夾,如此可以應用在不同場域,避免相互干擾。
能儲存的方式有許多種,建議依循資料庫的思維去整理分割資料表。這對於下一部分應用會很有幫助,能很快速的直接使用。
這部份先以csv為主,後續轉為sqlite。
將儲存的資訊取出應用
如果能套用資料庫,開發這部份就是非常迅速且容易的。
應用的話取決於想要呈現的內容以及使用什麼應用程式呈現,我們需要把資訊再過濾並重新整合,變成最後應用程式能使用的資料與格式。
共同命名規則
如果是順序法撰寫,會發現一個設備能找到很多個MAC Address,MAC Address格式也不一樣。到了第三部分,就會開始應用這些取得的資訊,會重新定義各種資訊在整理過程中是什麼角色,寫套算法,開始演算,然後取得最終想要的結果。
這時候,資訊被重新定義的角色就很適合作為模板的Value名稱,更適合將於各品牌的同意義不同名稱變成一致的名稱。