![通过邮件发送脚本的输出](https://linux22.com/image/158579/%E9%80%9A%E8%BF%87%E9%82%AE%E4%BB%B6%E5%8F%91%E9%80%81%E8%84%9A%E6%9C%AC%E7%9A%84%E8%BE%93%E5%87%BA.png)
我有一个用于监视生产中服务器的脚本,并且我希望每 2 小时通过邮件收到此脚本执行的结果,我该如何执行此操作?有人有例子吗?这是我的脚本:
#!/bin/sh
CheckPorts=`cd /DATA/scripts && sh checkPorts.sh`
CPU=`iostat -ch`
FreeMemory=`free -mh`
DISK_Space_DATA=`df -h /DATA`
DISK_Space_ROOT=`df -h /root`
Kafka=`ps -aux | grep kafka`
Spark=`ps -aux | grep spark`
# -CheckPorts:
echo -e "\e[31;43m***** Firewall Authorization *****\e[0m"
echo "${CheckPorts}"
echo ""
# -CPU:
echo -e "\e[31;43m***** CPU INFORMATION *****\e[0m"
echo "${CPU}"
echo ""
# -Free and used memory in the system:
echo -e "\e[31;43m ***** FREE AND USED MEMORY *****\e[0m"
echo "${FreeMemory}"
echo ""
# -File system disk space usage:
echo -e "\e[31;43m***** FILE SYSTEM /DATA DISK SPACE USAGE *****\e[0m"
echo "${DISK_Space_DATA}"
echo ""
# -File system disk space usage:
echo -e "\e[31;43m***** FILE SYSTEM /root DISK SPACE USAGE *****\e[0m"
echo "${DISK_Space_ROOT}"
echo ""
# -Spark Process Status:
echo -e "\e[31;43m***** Spark Process Status *****\e[0m"
echo "${Spark}"
echo ""
# -Kafka PROCESSES Status:
echo -e "\e[31;43m***** Kafka Processes Status *****\e[0m"
echo "${Kafka}"
echo ""
echo "Done"
答案1
假设您的脚本名为monitor.sh
.您可以在 Linux 上使用许多命令来发送电子邮件。
例如使用mail
命令:
mail -s "Monitor Report" [email protected] < <( bash monitor.sh )
和sendmail
:
echo "Subject: Monitor Report" | sendmail -v [email protected] < <( bash monitor.sh )
和ssmtp
:
ssmtp [email protected] < <( echo "Subject: Monitor" ; bash monitor.sh )
与curl
Gmail:
bash monitor.sh > report.txt
curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
--mail-from '[email protected]' --mail-rcpt '[email protected]' \
--upload-file report.txt --user '[email protected]:your-accout-password'
如果您希望每 2 小时自动执行一次,请将命令放在 cron 上(请参阅 man crontab)。
有可能,您的服务器已经正确配置了上述命令之一来发送电子邮件(sendmail
、mail
、ssmtp
),如果没有,请查看如何安装和配置这些命令。
参考:
https://blog.edmdesigner.com/send-email-from-linux-command-line/
https://tecadmin.net/ways-to-send-email-from-linux-command-line/
答案2
也许这会帮助您获得预期的结果
echo "Hourly report : \n $(cat \$file.log)" | mailx -s "Subject : add_your_subject" [email protected]
您甚至可以添加-a
到上面的 mailx 命令以将生成的日志作为附件附加
确保您是否要添加附件..生成如下date+time
日志
ABC_12_09_2020_1_56_34.log
您可以编写一些脚本,在生成新日志时选择最新文件,并且运行时的 mailx 命令应选择最新日志作为附件