最近在学习 Shell 编程,正好自己也经常在服务器上跑程序,所以写了这么个小脚本来方便监控程序的运行。
程序放在了mail-exec, 主要功能就是可以直接通过 mail-exec [command]来执行程序,程序结束后将会给指定的邮箱发送成功或失败的邮件。邮件的发送功能是通过 ssmtp 实现的,实测对 google, qq, 163 都可以支持。
所以,欢迎大家使用和交流~因为第一次自己写小脚本,肯定很弱鸡,还请各位巨巨多多提建议或者 pr !
1
hosiet 2016-12-10 17:05:14 +08:00 via Android
我觉得通用的 sendmail 接口比 ssmtp 更实用。
|
3
knightdf 2016-12-10 20:27:41 +08:00 1
execute something || echo "xxx error" | mail -s 'title' 'email address'
一行 shell 的事 |
4
neilp 2016-12-10 20:32:05 +08:00
应该使用 "$@" 而不是 "$*"
不需要使用 "sh -c", 直接加小括号在子 shell 中运行就可以了. 比如下面的例子: 它可以在 POSIX 兼容的任何 shell 中运行. 比如 Unix/BSD/Mac/Solaris/Linux/Cigwin 等等. ``` #!/usr/bin/env sh if ( "$@" ); then msg="Command '$@' success! " else msg="Command '$@' failed! " fi echo "$msg" | mail -s "$@" [email protected] ``` |
5
aleen42 2016-12-10 21:30:28 +08:00 1
我寫的這個文檔你也可以參考一下。 https://github.com/SoundTooth/checkServer#1-mutt
Mutt 可以實現無賬號即可發送郵件,服務器報警就是用的 Mutt 。 |
6
smallaccount 2016-12-11 02:30:16 +08:00
@knightdf 直接进垃圾邮件箱了,怎么办?
|
8
knightdf 2016-12-11 12:03:11 +08:00
@smallaccount 发件域名添加信任就可以了
|
9
eastonwyz OP @neilp 我自己搜了一下搞定了,把 stderr redirect 到一个临时文件然后从文件中读取,为了保证 stderr 中仍然保留错误消息,再重新把读取的文件输出到 stderr 就可以了!谢拉,我已经更新了我的脚本。
|
10
sola97 2016-12-11 13:03:46 +08:00
遇到 QQ 邮箱这种系统拦截比域名信任还优先的
|
11
neilp 2016-12-11 15:03:36 +08:00
|