本篇文章介绍了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