私はbashスクリプトを初めて使用します。 CentOSサーバーがあります。次のような非常に単純なコマンドを実行したいと思います。
service lfd status
次に、その出力をメールで送信します。誰かがこれを手伝ってくれませんか?最終的にこれは私がやりたかったことです:lfd.shのようなbashスクリプトを作成し、そのbashスクリプトを1時間ごとに実行します。したがって、そのbashスクリプトを実行すると、このコマンド「service lfd status」が実行され、出力が電子メールで送信されます。
他の回答と他の回答に対する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. mailocがdigitaloceanの指示に基づいてセットアップされると、次のようなメールを送信できるようになります。
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ジョブを作成する必要があります
this のようなWebサイトは、Cronジョブの構文を思い出すのに役立ちます。
crontab -e
0 * * * * /home/username/lfd.sh
これにより、毎月1回、毎時1時間、毎日、毎週ジョブが実行されます。詳細については、CronリンクまたはGoogle Cronの例をご覧ください。
これを試してください:
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
として使用します