Как показать историю заданий принтера CUPS?


14

Я печатаю некоторые файлы с удаленного компьютера на сетевой принтер с помощью команды lpr. Очевидно, это сработало, но через несколько минут, когда я набрал lpstat или lpq, задание уже исчезло, возможно, оно уже распечатало файл. Есть ли способ проверить историю или журнал моих успешно выполненных заданий в очереди на принтер?


Конечно, сейчас у меня нет доступа к принтеру, и поэтому я не могу проверить, был ли файл напечатан или нет.
Санти

Через веб-интерфейс это легко.
Фахим Митха

Что это, не могли бы вы объяснить немного больше?
Санти

Ответы:


30

Да, программа существует: lpstat- печатать информацию о статусе чашек

$ lpstat -W completed
-W which-jobs
     Specifies which jobs to  show,  completed  or  not-completed  (the
     default).  This option must appear before the -o option and/or any
     printer names, otherwise the default (not-completed) value will be
     used in the request to the scheduler.

Или, если вы предпочитаете через следующие веб-страницы :

https://localhost:631/printers/[NameOfPrinter]?which_jobs=completed
http://localhost:631/jobs?which_jobs=completed

С уважением


3
Это покажет только завершенный для вашего ID пользователя. Вы можете дать список пользователей , как это: lpstat -W completed -u user1,user2.
SLM

Есть ли у lpstat окно с прокруткой для истории выполненных заданий на печать, или оно показывает все задания, которые когда-либо были завершены?
Чиннычинчин

4

Я думаю /var/log/cups/page_logи т.д. имеет историю выполненных работ.

Альтернативой является веб-интерфейс

http://localhost:631/ 

который также показывает выполненные работы. Я не уверен, откуда веб-интерфейс получает информацию.


4

Другой ответ при попытке произвел следующее:

$ sudo lpstat -W completed
mfc-8480dn-1652         root              1024   Tue 28 Jan 2014 01:19:34 AM EST

Добавление пользователя, samlдает вам историю этого пользователя:

$ sudo lpstat -W completed -u saml | head -2
mfc-8480dn-1524         saml             23552   Thu 28 Nov 2013 10:45:44 AM EST
mfc-8480dn-1526         saml            699392   Sat 30 Nov 2013 10:34:34 AM EST

Но -u allупомянутое в этом U & L Q & A под названием: Просмотр всех заданий печати пользователя из командной строки ничего не сделало для меня.

$ sudo lpstat -W completed -u all | head -2
$

Любопытно, что я мог сделать это:

$ sudo lpstat -W completed -u saml,root | head -3
mfc-8480dn-1524         saml             23552   Thu 28 Nov 2013 10:45:44 AM EST
mfc-8480dn-1526         saml            699392   Sat 30 Nov 2013 10:34:34 AM EST
mfc-8480dn-1652         root              1024   Tue 28 Jan 2014 01:19:34 AM EST

Таким образом, один хакерский способ сделать это - формализовать список пользователей в вашей системе, а затем добавить это в качестве подкоманды к -uаргументу следующим образом:

$ sudo lpstat -W completed -u $(getent passwd | \
    awk -F: '{print $1}' | paste -sd ',')

Просто чтобы показать, что это видит всех пользователей локально, вы можете получить уникальный список ваших пользователей, например, так:

$ sudo lpstat -W completed -u $(getent passwd | \
    awk -F: '{print $1}' | paste -sd ',') | awk '{print $2}' | sort -u
ethan
root
sam
tammy

Вопросы?

Одна из проблем заключается в том, что если пользователь, печатающий в CUPS, не имеет учетной записи локально, он не будет отображаться.

Но если у вас есть каталог, содержащий ваши файлы управления LPD, обычно это параметр / var / spool / cups , you'll notice a bunch of control files in there. These files are kept as a result of theMaxJobs`, который по умолчанию равен 500, когда не установлен.

$ sudo ls -l /var/spool/cups/ | wc -l
502

Еще один источник имен пользователей?

Если вы посмотрите эти файлы, то заметите, что они содержат имена пользователей, а не только имена учетных записей, присутствующих в системе.

$ strings /var/spool/cups/* | grep -A 1 job-originating-user-name | head -5
job-originating-user-name
tammyB
--
job-originating-user-name
tammyB

Таким образом, мы могли бы выбрать все записи, содержащие имя пользователя, за которым следует буква B.

$ sudo strings /var/spool/cups/* | grep -A 1 job-originating-user-name | \
    grep -oP '.*(?=B)' | sort -u
ethan
guest-AO22e7
root
sam
saml
slm
tammy

Затем этот список можно адаптировать так же, как мы изначально использовали для получения списка пользователей getent passwd, например:

$ sudo lpstat -W completed -u $(strings /var/spool/cups/* | \
    grep -A 1 job-originating-user-name | \
    grep -oP '.*(?=B)' |sort -u | paste -sd ',') 
mfc-8480dn-1525         tammy           545792   Thu 28 Nov 2013 01:36:59 PM EST
mfc-8480dn-1526         saml            699392   Sat 30 Nov 2013 10:34:34 AM EST
mfc-8480dn-1652         root              1024   Tue 28 Jan 2014 01:19:34 AM EST
mfc-8480dn-1672         saml              1024   Sun 09 Feb 2014 01:56:26 PM EST

Ссылки


0

Кажется, что каждый ответ выше интересует только выполненные работы ...

Что, если вы также заинтересованы в работах, которые были отменены пользователем или администратором? Что если вы хотите узнать, сколько заданий было прервано самой системой печати из-за драйвера или других проблем?

Для этих случаев используйте:

lpstat -W all -o

Кроме того, вы можете узнать больше информации о каждой работе. В этом случае добавьте -lдлинный выходной формат:

lpstat -l -W all -o

-2

Эта команда появляется, чтобы очистить историю, а также любые активные задания:

sudo cancel -a -x
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.