私は初めて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
擬似端末を開く
touch
Ssh の擬似端末がファイルを生成しないようであれば、コマンドはファイルを生成します。
"""は"`"と同じではありません。
はい、Sshはif/then/elseステートメントで機能します。
出力の代わりにエラー出力が必要な場合は、次のように代わりに2>
使用してください>
。service lfd status 2> /tmp/servicestatus.txt