我正在寻找一种方法来轻松定义 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,但专为非重复事件而设计,任务创建成本极低,几乎为零。我是一个梦想家吗?我应该自己写吗?还是我应该简单地使用 shell 脚本?
答案1
Nagios 只能通知一次事件。
我们用它来开票。
只需设置通知间隔 = 0(对于服务和主机而言)您将只会收到一次电子邮件/短信。
答案2
只是为了增加一些输入我应该自己写吗问题,您可以创建一个 FIFO 或平面文件作为自定义日志,并向自定义脚本添加命令,将重要输出写入该日志文件。或者,您可以创建一个简单的脚本,定期检查重要文件和进程的状态,并将其输出发送到该日志。
要在服务器上创建 FIFO:
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 函数。
答案3
我认为inotifywatch
,,ps
logger
并且syslog
在某些自定义脚本中可能会起到作用。