She*_*oss 4 linux display cups quota
这是一个更一般的使用问题。
如何监视日志文件的特定更改,并在 Ubuntu 中使用“通知发送”警报在发生所述更改时发出警报?
原问题:
我正在尝试为办公室的打印机设置打印配额。然而,当达到配额时,它会出现,打印只是默默地失败,用户不知道发生了什么。
通过更改 /etc/cups/printers.conf 中的 PageLimit 指令设置页面配额
看来我收到了消息
E [04/Mar/2013:15:34:28 -0700] 为 Create-Job 返回 IPP client-error-not-possible (ipp://localhost:631/printers/Hewlett-Packard-HP-LaserJet-4100- MFP)来自本地主机
在我的日志中 /var/log/cups/error_log 。
我尝试通过类似的命令将某些东西组合在一起
Run Code Online (Sandbox Code Playgroud)`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'`但这似乎并没有真正起作用,因为它只在第一条错误消息上显示一次消息。
任何想法或解决方案?似乎真的应该为此提供一个预先烘焙的解决方案。
解决方案
incrontab 完美运行。
sudo apt-get install incrontab
Run Code Online (Sandbox Code Playgroud)
将 root 用户添加到 /etc/incron.allow
sudo nano /etc/incron.allow
Run Code Online (Sandbox Code Playgroud)
创建脚本 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'
Run Code Online (Sandbox Code Playgroud)
最后将事件添加到 incrontab 表中
sudo incrontab -e
/var/log/cups/error_log IN_MODIFY /usr/local/bin/monitorCUPSlog.sh
Run Code Online (Sandbox Code Playgroud)
似乎工作,是的。
我会考虑使用incrontab来监视对文件系统的更改,并将其与您已有的小脚本结合起来。
这看起来大致如下。
首先,将要执行的脚本另存为文件,例如cups_monitor.sh在/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
Run Code Online (Sandbox Code Playgroud)
你可能想检查一下。我的脚本永远不会第一次尝试:)。另请注意,如果此脚本后跟其他消息,则该脚本可能不会捕获您的错误消息:我只查看日志文件的最后一行 ( -n 1); 这应该很容易改变。
然后编辑你的 incrontab
incrontab -e
Run Code Online (Sandbox Code Playgroud)
通过添加行
/var/log/cups/error_log IN_CLOSE_WRITE /usr/local/bin/cups_monitor.sh
Run Code Online (Sandbox Code Playgroud)
在IN_CLOSE_WRITE被称为“事件标志”,并表示要要打电话给你的脚本时/var/log/cups/error_log开放供写入后关闭; 您可以在 incrontab 的手册页中找到其他事件。
请记住,我没有对此进行测试。您可以通过查看系统日志 ( tail /var/log/syslog)来查看 incrontab 文件是否已成功更改以及它是否调用了您的脚本。
(我在 Stack Exchange 上的第一个回答!Yippee!)
| 归档时间: |
|
| 查看次数: |
4236 次 |
| 最近记录: |