web-dev-qa-db-ja.com

Linux:ファイルが変更されたときにユーザーに警告する

これがより一般的な使用法の質問です。

特定の変更についてログファイルを監視し、Ubuntuで「notify-send」アラートを使用して、変更が発生したときにアラートを出すにはどうすればよいですか?

元の質問:

ここのオフィスで、プリンタの印刷割り当てを設定しようとしています。ただし、クォータに達すると表示され、印刷はサイレントに失敗し、ユーザーは何が起こっているのかわかりません。

/etc/cups/printers.confのPageLimitディレクティブを変更してページクォータを設定します

メッセージが表示されているようです

E [04/Mar/2013:15:34:28 -0700] Create-Jobに対してIPPクライアントエラーが返されません(ipp:// localhost:631/printers/Hewlett-Packard-HP-LaserJet-4100- MFP)ローカルホストから

/ var/log/cups/error_logの私のログにあります。

次のようなコマンドで何かを一緒にハッキングしてみました

`tail -f /var/log/cups/error_log | grep 'client-error-not-possible for Create-Job' DISPLAY=:0 notify-send -t 30000 -i 'notification-message-email' 'Printing Quota reached for this Printer'`

ただし、最初のエラーメッセージにメッセージが1回しか表示されないため、実際には機能していないようです。

何か考えや解決策はありますか?これにはプリベークされた解決策があるはずです。

[〜#〜]ソリューション[〜#〜]

incrontabは完全に機能しました。

Sudo apt-get install incrontab

ユーザーrootを/etc/incron.allowに追加します

Sudo nano /etc/incron.allow

スクリプトmonitorCUPSlog.shを作成します

#!/bin/bash
tail -n 1 /var/log/cups/error_log | grep 'client-error-not-possible' | DISPLAY=:0 notify-send -t 30000 -i 'notification-message-email' 'Daily Print Quota exceeded for this printer'

そして最後にイベントをincrontabテーブルに追加します

Sudo incrontab -e
/var/log/cups/error_log IN_MODIFY /usr/local/bin/monitorCUPSlog.sh

うまくいくようです、イェーイ。

4
Sheldon Ross

ファイルシステムへの変更を監視するために incrontab を使用することを検討し、それを既存の小さなスクリプトと組み合わせます。

これはおおよそ次のようになります。

まず、実行するスクリプトをファイルとして保存します。なので cups_monitor.sh in /usr/local/bin(実行可能にすることを忘れないでください)。

#!/bin/sh
VAR=`tail -n 1 /var/log/cups/error_log | grep 'client-error-not-possible for Create-Job'`
if [[ -n "$VAR" ]]; then
   echo "$VAR" | DISPLAY=:0 notify-send -t 30000 -i
fi

これを確認することをお勧めします。私のスクリプトは決して正しくない最初の試みです:)。また、このスクリプトの後に他のメッセージが続く場合、このスクリプトがエラーメッセージをキャプチャしない可能性があることにも注意してください。ログファイルの最後の行(-n 1);これは簡単に変更できるはずです。

次に、incrontabを編集します

incrontab -e

行を追加することによって

/var/log/cups/error_log IN_CLOSE_WRITE /usr/local/bin/cups_monitor.sh

IN_CLOSE_WRITEは「イベントシンボル」と呼ばれ、スクリプトをいつ呼び出すかを示します/var/log/cups/error_log書き込み用に開いた後、閉じました。 incrontabのmanページで他のイベントを見つけることができます。

私はこれをテストしなかったことを覚えておいてください。 Syslog(tail /var/log/syslog)。

(Stack Exchangeでの私の最初の答えはこれまでです!Yippee!)

5
Semafoor

incron :: inotify を使用して、ログファイルエントリの作成や変更イベント時に電子メールの送信などを行うカスタマイズされたトリガーをファイルに添付できます。

0
amphibient