명령을 실행하고 결과를 이메일로 보내세요.

명령을 실행하고 결과를 이메일로 보내세요.

저는 bash 스크립팅을 처음 접했습니다. CentOS 서버가 있습니다. 다음과 같이 매우 간단한 명령을 실행하고 싶습니다.

service lfd status

그런 다음 출력이 내 이메일로 전송됩니다. 누구든지 이 문제를 해결하도록 도와줄 수 있나요? 궁극적으로 이것이 제가 하고 싶은 일입니다. 1시간마다 실행되는 lfd.sh와 같은 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]

이는 서비스 lfd 상태 출력을 이메일로 받는 데 필요한 전부입니다. 실행하려면 다음을 실행하여 실행 가능하게 만드십시오.

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의사 터미널 열기

touchSsh의 의사 터미널이 파일을 생성하지 않는 것 같으면 명령이 파일을 생성합니다.

"""는 "`"와 동일하지 않습니다.

예, Ssh는 if/then/else 문과 함께 작동합니다.

출력 대신 오류 출력을 원하면 다음과 같이 2>대신 사용하십시오 >.service lfd status 2> /tmp/servicestatus.txt

관련 정보