我是 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