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

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

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

Но, похоже, это не сработало, поскольку в первом сообщении об ошибке это сообщение отображается только один раз.

Есть мысли или решения? Похоже, что для этого должно быть готовое решение.

0
задан 8 September 2017 в 21:32

1 ответ

Ответ здесь, на Супер пользователя , Семафор :

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

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

0
ответ дан 8 September 2017 в 21:32

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

Похожие вопросы: