最近在学习 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 ![]() 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 ![]() |
![]() | td width="10" valign="top"> 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 |