저는 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
의사 터미널 열기
touch
Ssh의 의사 터미널이 파일을 생성하지 않는 것 같으면 명령이 파일을 생성합니다.
"""는 "`"와 동일하지 않습니다.
예, Ssh는 if/then/else 문과 함께 작동합니다.
출력 대신 오류 출력을 원하면 다음과 같이 2>
대신 사용하십시오 >
.service lfd status 2> /tmp/servicestatus.txt