我正在寻找一种方法来轻松定义在Linux机器上发生的一些事件的一次性通知。 事件可能包含如下内容: file /tmp/my.lock is unlinked或process 666 finished ,或者更复杂一些,比如process 'backup.sh' closed file 'backup.tgz' AND process 'backup.sh' exited with return code 0 。
通知也应该灵活。 像notify 192.168.0.100 via org.freedesktop.Notifications.Notify或notify [email protected] via email 。
实际上,它就像Nagios,但是devise用于非重复事件,创build任务几乎为零,成本几乎为零。 我是一个梦想家吗? 我应该自己写吗? 或者我应该只使用shell脚本?
Nagios可以准确地通知事件一次。
我们用它来打开门票。
只要设置notification_interval = 0 (对服务和主机),你会得到电子邮件/短信一次。
为了增加更多的input, 我应该自己写一个问题,你可以创build一个FIFO或者平面文件来作为一个自定义的日志,并且向你的自定义脚本添加命令,把重要的输出写到这个日志文件中。 或者,您可以创build一个简单的脚本,定期检查重要文件和进程的状态,并将其输出发送到该日志。
在服务器上创buildFIFO:
mkfifo /var/log/mylog
要从服务器读取日志:
ssh user@host "tail -f /var/log/mylog"
将这些函数发送到您的自定义脚本中以轻松写入日志:
function warning { echo -e "\e[33;1m :: \e[0m$@" > /var/log/mylog; };
function error { echo -e "\e[31;1m :: \e[0m$@" > /var/log/mylog; };
function information { echo -e "\e[32;1m :: \e[0m$@" > /var/log/mylog; };
然后通过发出以下命令将条目写入日志:
information "Some text"
warning "Some more text"
error "Some important text"
您可以同样添加一个使用sendmail (或类似的)发送邮件的shell函数。
我会认为inotifywatch , ps , logger和syslog在一些自定义脚本的组合可能会伎俩。