スクリプト結果をメールで送信

スクリプト結果をメールで送信

実稼働中のサーバーを監視するスクリプトがあり、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 )

Gmailの場合curl

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コマンドは最新のログを添付ファイルとして選択する必要があります。

関連情報