コマンドを実行して結果を電子メールで送信します。

コマンドを実行して結果を電子メールで送信します。

私は初めて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を設定したら、次のEメールを送信できます。

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

関連情報