在命令输出时触发事件或通知。

triggerd的Python项目详细描述


https://img.shields.io/pypi/v/triggerd.svghttps://img.shields.io/pypi/l/triggerd.svghttps://img.shields.io/pypi/dm/triggerd.svg

triggerd是一个系统管理/自动化工具,用于在命令输出时触发事件或通知。

将创建包含触发条件的事件文件。理想情况下,您将创建一个cron条目或systemd计时器,以定期执行triggerd EVENTFOLDER。如果命令状态或输出与触发条件匹配,则执行触发事件或通知,并将事件文件标记为已触发。

triggerd非常适合查询网页以匹配文本或任何类型的内容我最初创建它是为了与urlwatch的修改版本一起使用,以便在网页发生某些更改时通知我,但是潜在的用途是无限的

在用python重写之前,该脚本最初是作为bash shell脚本编写的。Bash版本几乎相同,如果您的环境中没有Python 3,那么Bash版本是一个很好的选择它包含在这个存储库的scripts/triggerd.sh下。

安装

安装triggerd的最简单方法是通过pip:

pip3 install --user triggerd

仅供参考:triggerd的shell版本将作为triggerd.sh安装到本地bin文件夹中

更新

运行以下命令更新到最新版本:

pip3 install --upgrade --user triggerd

用法

triggerd是通过名为event files的配置文件控制的您可以按如下方式执行:

triggerd FILE1 FILE2 FILE3...

或者针对事件文件的整个目录:

triggerd EVENTFOLDER1 EVENTFOLDER2...

您可以在不实际执行事件文件配置的情况下对其进行测试:

triggerd --verify FILE

–verbose选项可用于显示执行详细信息:

triggerd --verbose FILE

事件文件

请注意:事件文件是手动解析的,它们不是shell的“源”。内容由shell执行,与它们显示的完全一样

基本文档(示例事件文件和触发器模板文件)安装到$prefix/share/triggerd/examples

以下是当google.com无法通过curl访问时触发的示例事件文件:

COMMAND=curl -sL google.com
EVENT_NAME=Google Availability
MATCH_CONTENT=0
MATCH_CRITERIA=ne
STATUS=enabled
TEST_TYPE=status
TRIGGER_CUSTOM=notify-send --urgency=critical "$EVENT_NAME" "Google is not available!"

下面是一个示例事件文件,当google.com主页源代码包含单词surprise

COMMAND=curl -sL google.com
EVENT_NAME=Google Surprise
MATCH_CONTENT=surprise
MATCH_CRITERIA=contains
STATUS=enabled
TEST_TYPE=content
TRIGGER_CUSTOM=notify-send --urgency=critical "$EVENT_NAME" "Google contains a surprise!"

下面是当/tmp的大小大于或等于10M时触发的示例事件文件:

COMMAND=du -ms /tmp | cut -f1
EVENT_NAME=Size Check
MATCH_CONTENT=10
MATCH_CRITERIA=ge
STATUS=enabled
TEST_TYPE=arithmetic
TRIGGER_CUSTOM=notify-send --urgency=critical "$EVENT_NAME" "/tmp is >= 10M in size!"

测试类型选项:

arithmetic
content
status    # exit code

算术和状态测试的匹配条件

eq
ge
gt
le
lt
ne

内容测试的匹配条件

contains
does_not_contain

matches
does_not_match

null
not_null

STATUS指示事件是否处于活动状态:

enabled
disabled
triggered    # this will be set by triggerd upon a trigger event

触发器

有两种类型的触发器可用。

TRIGGER_CUSTOM用于指示shell命令。

TRIGGER_CUSTOM=notify-send "Trigger Notification"

TRIGGER_NAMED用于指示触发器模板的名称

TRIGGER_NAMED=special

触发器模板可以在$HOME/.config/triggerd/triggers.conf

special=notify-send--icon=~/.config/triggerd/icons/special.png--urgency=critical "triggerd: $EVENT_NAME" "special event was triggered!"

事件名在任何一个触发器中都可以作为$EVENT_NAME引用。$MATCH_CONTENT也是如此

如果未指示触发器,则将通过notify send显示默认通知

许可证

版权所有(c)2015-6(brbsix@gmail.com

根据GPLv3许可证授权。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java的单元测试测试用例库。util。列出实现   java通过超类进行序列化/反序列化   java Android获取设备语言ISO字符串   java如何打开广告的行动。移动   Eclipse IDE for(嵌入式C/C++)开发者202012:经典的深色主题深黑色背景和菜单中的文本   java使用不同的内容动态创建TableView(JavaFX)   java JAXB将多个同名节点解组   java ClassDefNotFoundException,即使类由类加载器加载(服务器上安装了多个应用程序)   java有没有办法关闭在后端生成的MqttClient线程?   html如何在网站上的java小程序中包含图像?   java无法访问已分配给超类引用的子类实例变量   java在TableViewer中双击打开对话框   列出如何创建ListNode。JAVA   java如何从文本中输出的数组中放入随机图像