Распечатайте полезное сообщение об ошибке при достижении квоты на печать

Я пытаюсь установить квоты на печать для принтеров здесь, в офисе. Тем не менее, он появляется, когда квота достигнута, печать просто молча терпит неудачу, и пользователь не имеет ни малейшего представления, что происходит.

Квота страницы была настроена путем изменения директивы 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 ответ

Ответил здесь на Супер пользователя от Semafoor:

Я хотел бы изучить использование 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

Вы можете проверить это. Мои сценарии никогда не бывают правильными с первой попытки:). Также обратите внимание, что возможно, что этот скрипт не захватывает ваше сообщение об ошибке, если за ним следует другое сообщение: я смотрю только на последнюю строку файла журнала (-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.

Имейте в виду, что я не проверял это. Вы можете увидеть, был ли файл incrontab успешно изменен и вызывает ли он ваш скрипт или нет, заглянув в системный журнал (tail /var/log/syslog).

Другие вопросы по тегам