過去 1 時間以内にファイルが変更されたかどうかを確認し、変更された場合はアラートを電子メールで送信する bash スクリプトを探しています。このスクリプトは、Solaris および Ubuntu で使用されます。難しいことではないと思いますが、私は Linux 管理者ではありません。誰か助けてくれませんか?
2 に答える
これはどう?
#!/bin/bash
[[ -z `find /home/spatel/ -mmin -60` ]]
if [ $? -eq 0 ]
then
echo -e "nothing has changed"
else
mail -s "file has been changed" spatel@example.com
fi
このスクリプトを 1 時間ごとの cron ジョブに入れます
01 * * * * /path/to/myscript
Linux はこのinotify
コマンドをサポートしています。ファイルの変更、ファイルの作成など、いつでも好きなときにファイルのアクティビティを監視するために使用します。
上記の検索コマンドは、すぐに使用できる solaris では機能しません。Linux では問題ありません。Solaris には 2 つのオプションがあります。
www.sunfreeware.com にアクセスして、gnu coreutils をダウンロードします。これにより、gnu find (上記のバージョンの find) がインストールされます。
/usr/local/bin
touch -t [time string]
touch コマンドを使用するスクリプトを作成し、60 分以上待ってからファイルをテストします。唯一の問題は、このスクリプトがバックグラウンドで永久に実行されることです。ファイルの作成に適したタイムストリングを生成する perl を知っていれば、これを回避できます。これは永久に実行するバージョンです:真実でありながら
do touch dummy sleep 3615 # 1 hour 15 seconds
[ file_i_want_to_test -nt ダミー ] && echo 'file blah changed' | mailx -s 'ファイルが変更されました' me@myco.com
done