基於Pyinotify打造系統完整性檢測工具
本篇文章介紹了Pyinotify的特性、如何安裝及使用示例,方便入門學習。
回顧上篇文章:你真的會使用搜索引擎嗎?
特性
Pyinotify 是一個監控文件系統變化的 Python 模塊,Pyinotify 是基於一個叫 inotify 的 Linux 內核功能而開發的。inotify 是一個事件驅動通知程序,它的作用是通過系統調用將系統事件從內核態導出到用戶態。Pyinotify 綁定了這些系統調用,並且在其上提供了一系列的介面實現,提供通用和抽象的方式來操作這些功能。
安裝
使用 Python 的 pip 工具安裝 Pyinotify 模塊。
Quick start
安裝好 Pyinotify 後,你可以參考下面的例子來快速的使用 Pyinotify 監控指定文件或目錄變化。如果你指定了一個目錄,Pyinotify 將監聽這個目錄下的所有文件,但不會監聽子目錄。
下面讓我們對 / tmp 目錄進行一些操作:
操作命令的同時 pyinotify 會監聽到命令所產生的事件:
值得注意的是,Pyinotify 默認監聽系統產生的所有事件。
默認事件欄位解讀如下:
Pyinotify 事件列表
使用示例
了解 Pyinotify 以及它所支持的系統事件後,我們可以覆寫 Pyinotify 的事件方法,將事件輸出成指定的格式。
code:
運行示例代碼後,下面讓我們對 / tmp 目錄再次進行操作:
同時 Pyinotify 按照我們預期的結果將事件進行輸出:
以上的示例代碼中監聽了所有事件,若想監聽部分事件請修改 add_watch 參數部分:
你可以增加更多的事件方法,監控更多的系統關鍵目錄。
總結
目前 Unix/Linux 下有許多類似的檢查工具,如 Tripwire、Afick 等。這樣的工具配置使用起來相對簡單,但是不能重新定義系統產生的事件,事件報告需要通過郵件輸出。使用 Pyinotify 可以根據使用需求進行簡單開發並使用。它的好處是可以很方便的集成到各個系統,系統產生的事件數據還可以稍作整理然後推送到 ELK、OpenFalcon 等平台進行可視化展示和告警。
Pyinotify 更多的功能請參考官方用例:
https://github.com/seb-m/pyinotify/wiki/List-of-Examples
TAG:小米運維 |