
私はファイルの内容が変わるたびに電子メールで通知するLinuxスクリプト(inotifyツールや他のユーティリティではない)を探しています。 Googleでサンプルスクリプトを管理しましたが、手動で実行する必要があり、電子メールは実行されません。
[[ -z `find /path/to/file -mmin -60` ]]
if [ $? -eq 0 ]
then
echo -e " /path/to/file nothing has changed"
else
mail -s "/path/to/file has been changed" mailid
fi
答え1
目的のタスクを実行するスクリプトがある場合は、スクリプトをcronテーブル(またはcron crontab
)に追加すると、目的の頻度でタスクが実行されます。だから:
#!/bin/bash
if ! [[ -z $(find /path/to/file -mmin 60) ]]; then
# The file was changed, so:
echo -e "The hash is:\n$(md5sum /path/to/file)" | mail -s "/file has changed on $(hostname -s) [email protected]"
else
# If this is in the crontab, remove this else stanza; cron
# jobs should not write to standard output, lest that output
# be sent to the local mailer daemon to drop it into the owner's
# mailbox.
echo "No changes to /path/to/file detected."
fi
答え2
しかし、手動で実行する必要があります。
本当に重要なのは、電子メール通知をどれくらい頻繁に受け取りたいかです。非常に速くする必要がない場合は、cron操作で十分です。他の場所でファイル変更時間をキャプチャしてその値を比較するか、-mtime / -mminで "find"を使用します。またはロゴファイルをタッチしてください。ターゲットファイルがフラグファイルよりも最新の場合は、電子メールを送信してフラグファイルのタイムスタンプを更新します。
(ほぼ)即時通知が必要な場合は、次の点を確認してください。インクロン
メールは実行されません。
… …言うことはできません。ログを確認してください。メールが届かない理由は、ここでよくある質問です。