Linux cron 作业将命令的输出通过电子邮件发送

标签 linux email cron output-redirect

我想运行一个 cron 作业来备份一些 mysql 数据库,方法是将输出传输到一个文件,然后通过电子邮件发送。

以下是否有效?

15 2 * * * root mysqldump -u root -pPASSWORD --all-databases | \
    gzip > /database_`data'+%m-%d-%Y'`.sql.gz | \
    mail -s "Report 05/06/07" user@example.com < /database_`data'+%m-%d-%Y'`.sql.gz

最佳答案

您的脚本有几个问题,我已在下面对其进行了更改,请仔细注意空格的更改、date 的拼写以及将 | 替换为 ;.

然而,最有趣的问题是 mail 不幸的是不能发送附件。您可以使用 uuencode 将文件嵌入邮件中:

15 2 * * * root mysqldump -uroot -pPASSWORD --all-databases | gzip > /database_`date +'%m-%d-%Y'`.sql.gz ; uuencode /database_`date +'%m-%d-%Y'`.sql.gz /dev/stdout | mail -s "Report 05/06/07" user@domain.com

或者如果你想使用正确的 MIME 附件(你需要安装 MetaMail):

15 2 * * * root mysqldump -uroot -pPASSWORD --all-databases | gzip > /database_`date +'%m-%d-%Y'`.sql.gz ; metasend -b -t user@domain.com -s "Report 05/06/07" -m application/gzip -f /database_`date +'%m-%d-%Y'`.sql.gz

或者像上面那样安装 mpack,而不是 MetaMail:

15 2 * * * root mysqldump -uroot -pPASSWORD --all-databases | gzip > /database_`date +'%m-%d-%Y'`.sql.gz ; mpack -s "Report 05/06/07" -c application/gzip /database_`date +'%m-%d-%Y'`.sql.gz user@domain.com

关于Linux cron 作业将命令的输出通过电子邮件发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5190215/

相关文章:

python - 从 python 脚本运行终端命令 (Linux)

linux - 为什么 docker 有能力运行不同的 linux 发行版?

php - 测量服务器正常运行时间

email - 确认 PayPal 沙箱帐户电子邮件

python - 如何知道上次运行 cron 任务的时间?

ubuntu - 如何通过 telnet 以编程方式添加 cron 作业?

linux - Puppet:vcsrepo with git,Ubuntu 和 CentOS 之间的请求格式不同

java - 使用 codenameOne Message 类发送电子邮件

linux - 在 Automic 12 bash 中,mailx 正文中的特殊字符导致正文作为二进制文件附加

javascript - 用于 cron 作业的 Nodejs