스크립트 결과를 이메일로 보내기

스크립트 결과를 이메일로 보내기

프로덕션 중인 서버를 모니터링하는 스크립트가 있고 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 명령은 최신 로그를 첨부 파일로 선택해야 합니다.

관련 정보