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