- ベストアンサー
メール通知するシェルスクリプトについて
次のような条件の時メール通知を行うシェルを作成したいと考えています。 ・ディレクトリを定期的に検索。 ・特定の文字を含むファイルが到着した際メール通知 どのように実装すれば宜しいでしょうか。 ウェブサイト等で調べましたが良く分からず苦戦しております。 ヒントなどいただけましたら幸いです。宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Linuxのbashであれば、例えば、直近60分以内に更新があったファイルのうち、該当文字を含むファイルの数を抽出してその件数を保持し、件数分だけfor文でメールを送信する処理を繰り返すようなスクリプトを作成し、cronなどのスケジューラで1時間に一度そのスクリプトを実行するように登録しておく、といったやり方を思いつきました。 === #!/bin/bash CNT=$(find $TARGET_DIR -type f -mmin -60 -name "*test*" | wc -l) for i in $CNT do mail xxx # メール送信処理 done === もし実行間隔を5分にしたいのであれば、findの-mminオプションの引数を5にして、cronで5分おきにスクリプトを実行するようにスケジュールします。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
こんな感じでしょうか。 60秒ごとにチェックして、Aという文字を含んだファイルがあれば、メールする。 cd ディレクトリ while sleep 60 do if ls -1 | grep -q A then ls -1 | mail -s "File exists" foo@example.com fi done あるいは、cronからの起動だと、 MAILTO=foo@example.com * * * * * /bin/sh /home/foo/check と、crontabに登録して、/home/foo/check で、 cd ディレクトリ ls -1 | grep A 存在すると、それ以降ずっとメールが来ますが、到着した初回だけとかいうともっと面倒です。