当达到打印配额时打印有用的错误消息

当达到打印配额时打印有用的错误消息

我正在尝试为办公室里的打印机设置打印配额。但是,当达到配额时,打印似乎会默默失败,而用户根本不知道发生了什么。

页面配额是通过修改 PageLimit 指令来设置的/etc/cups/printers.conf

我似乎收到了消息

E [04/Mar/2013:15:34:28 -0700] Returning IPP client-error-not-possible for Create-Job
(ipp://localhost:631/printers/Hewlett-Packard-HP-LaserJet-4100-MFP) from localhost

在我的日志中/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

已解答超级用户经过沙玛福

我会考虑使用定时任务用于监视文件系统的变化,并将其与您已有的小脚本结合起来。

这大致如下所示。首先,将要执行的脚本保存为文件,例如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

您可能想检查一下。我的脚本第一次尝试总是不正确 :)。还请注意,如果错误消息后面跟着其他消息,则此脚本可能无法捕获您的错误消息:我只查看日志文件的最后一行(-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 的手册页中找到其他事件。

请记住,我没有测试过这一点。您可以通过查看 syslog ( tail /var/log/syslog) 来查看 incrontab 文件是否已成功更改以及它是否调用了您的脚本。

相关内容