2017-05-31 38 views
0

我有一个cronjob,每10分钟备份我的数据库。我希望在备份失败时收到短信。如果cronjob备份失败,请执行curl命令

例子:

*/1 * * * * sudo /usr/local/sbin/mysql.sh 2>&1 | curl 'http:www.smsapi.com/user=username&pass=password&text=$errormsg'

目前它不会发送任何短信。我怎样才能追加错误信息来卷曲? (我也尝试过这种电子邮件,而不是短信,但这也行不通)。

回答

0

邮件:

mysql.sh 2>&1 | mail -s "Mysql backup" -E [email protected] 

卷曲:

mysql.sh 2>&1 | curl "http:www.smsapi.com/user=username&pass=password&text=`cat -`" 

请注意:双引号代替单引号和反引号与命令STD输入转换为一个参数。转换是相当原始的,它没有URL引用特殊字符。

+0

如果没有错误,这会向我发送一封空白邮件 – Ash

+0

已修复。选项-E可防止发送空的主体。 – phd

+0

谢谢,它解决了我的电子邮件问题。但没有运气与短信。 – Ash

0

您需要使用双管道command || error-handler才能在命令失败的情况下调用错误处理程序。

我建议你颠倒逻辑command && success-handler并使用诸如WDT.io这样的服务来成功处理程序,以便在成功失败(又名失败)的情况下提醒您。原因在于cron作业本身可能无法运行,在使用错误处理程序时您从未发现过。

至于你的第二个问题,如何追加错误,你可以使用$?访问以前的返回码。