7

過去 1 時間以内にファイルが変更されたかどうかを確認し、変更された場合はアラートを電子メールで送信する bash スクリプトを探しています。このスクリプトは、Solaris および Ubuntu で使用されます。難しいことではないと思いますが、私は Linux 管理者ではありません。誰か助けてくれませんか?

4

2 に答える 2

14

これはどう?

#!/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 
于 2013-01-04T21:05:02.157 に答える
2

Linux はこのinotifyコマンドをサポートしています。ファイルの変更、ファイルの作成など、いつでも好きなときにファイルのアクティビティを監視するために使用します。

上記の検索コマンドは、すぐに使用できる solaris では機能しません。Linux では問題ありません。Solaris には 2 つのオプションがあります。

  1. www.sunfreeware.com にアクセスして、gnu coreutils をダウンロードします。これにより、gnu find (上記のバージョンの find) がインストールされます。/usr/local/bin

  2. 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
    
于 2013-01-06T03:26:31.787 に答える