これがより一般的な使用法の質問です。
特定の変更についてログファイルを監視し、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
うまくいくようです、イェーイ。
ファイルシステムへの変更を監視するために 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!)
incron :: inotify を使用して、ログファイルエントリの作成や変更イベント時に電子メールの送信などを行うカスタマイズされたトリガーをファイルに添付できます。