运行命令并通过电子邮件发送输出

运行命令并通过电子邮件发送输出

我是 bash 脚本新手。我有一台 CentOS 服务器。我想运行一个命令,非常简单,例如:

service lfd status

然后将输出通过电子邮件发送到我的电子邮件。有人可以帮我解决这个问题吗?最终,这就是我想做的:创建一个像 lfd.sh 这样的 bash 脚本,每 1 小时运行一次该 bash 脚本。因此,当我运行该 bash 脚本时,它将运行此命令“service lfd status”并通过电子邮件向我发送输出。

答案1

根据其他答案和OP对其他答案的评论,我想我可以提出一个答案。

1.您想要运行命令并将其输出发送到某个电子邮件。在 Linux 上发送邮件有多种选择。您需要确保您确实可以发送电子邮件,然后您的命令才能执行此操作。使用 mail 或 mailx 等程序。

sudo yum install mailx

有关配置 mailx 程序的更多说明,请按照此处的说明进行操作 -https://www.digitalocean.com/community/tutorials/how-to-send-e-mail-alerts-on-a-centos-vps-for-system-monitoring

您还可以使用 python 或任何编程语言,但为了简单起见,我现在将放弃它。

2.根据 digitalocean 中的说明设置 mailx 后,您现在应该能够发送如下电子邮件:

echo "Your message" | mail -s "Message Subject" email@address

如果您收到该电子邮件,那就完美了!我们已经准备好进行下一部分了。创建您的文件lfd.sh

#!/bin/bash
service lfd status | mail -s "LFD Status" [email protected]

这应该就是将 service lfd status 的输出通过电子邮件发送给您所需的全部内容。如果您想运行它,请确保通过运行使其可执行

chmod +x ./lfd.sh

这样应该会向您发送一封电子邮件,但我们还没有完成。您还提到您希望它每小时自动向您发送一封电子邮件。这可以通过 crontab 来完成。

Crontab/Cron 是 Linux 上非常有用的自动任务调度程序。您需要使用 lfd.sh 创建一个 Cron 作业

类似的网站帮助我记住 Cron 作业的语法。

crontab -e
0 * * * * /home/username/lfd.sh

这应该每小时、整点、一周中的每一天(如果每个月)运行一次该作业。有关详细信息,请查看 Cron 链接或 Google Cron 示例。

答案2

试试这个:

ssh -t [email protected] ' touch /tmp/servicestatus.txt ; service lfd status > /tmp/servicestatus.txt ; mutt -s "Service Status" [email protected] < /tmp/servicestatus.txt '

作为:

-t打开伪终端

touch命令创建文件,一旦Ssh的伪终端似乎不创建它。

请注意,“””与“`”不同。

是的,Ssh 确实适用于 if/then/else 语句。

如果您希望错误输出而不是任何输出,请使用2>代替>, 作为service lfd status 2> /tmp/servicestatus.txt

相关内容