Jak wyświetlić historię zadań drukarki CUPS?

14

Za pomocą polecenia lpr drukuję niektóre pliki ze zdalnego komputera na drukarce sieciowej. Najwyraźniej zadziałało, ale kilka minut później, gdy wpisałem lpstat lub lpq, zadanie już zniknęło, prawdopodobnie już wydrukowało plik. Czy istnieje sposób na sprawdzenie historii lub dziennika moich pomyślnie zakończonych zadań w kolejce drukarki?

Santi
źródło
Oczywiście nie mam teraz dostępu do drukarki i dlatego nie mogę sprawdzić, czy plik został wydrukowany, czy nie.
Santi,
Za pomocą interfejsu internetowego jest to łatwe.
Faheem Mitha
Co to jest, czy mógłbyś wyjaśnić coś więcej?
Santi,
localhost: 631 .
Faheem Mitha

Odpowiedzi:

30

Tak, istnieje program: lpstat- drukuj informacje o stanie kubków

$ 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.

Lub jeśli wolisz za pośrednictwem następujących stron internetowych :

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

Z poważaniem

Alexis-Emmanuel Haeringer
źródło
3
To pokaże tylko ukończone dla twojego identyfikatora użytkownika. Możesz podać listę użytkowników, takich jak ten: lpstat -W completed -u user1,user2.
slm
Czy lpstat ma zmieniane okno historii ukończonych zadań drukowania, czy też pokazuje wszystkie zadania, które kiedykolwiek zostały ukończone?
chinnychinchin
5

Myślę, że /var/log/cups/page_logitp. Ma historię zakończonych prac.

Alternatywą jest interfejs sieciowy

http://localhost:631/ 

który pokazuje również ukończone zadania. Nie jestem pewien, skąd interfejs sieciowy pobiera informacje.

Faheem Mitha
źródło
4

Druga odpowiedź przy próbie dała następujące:

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

Dodanie użytkownika samldaje historię tego użytkownika:

$ 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

Ale -u allwspomniane w tym pytaniu U&L zatytułowanym: Wyświetl wszystkie zadania drukowania użytkownika z wiersza poleceń nic mi nie zrobiły.

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

Co ciekawe, mogłem to zrobić:

$ 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

Jednym z hackerskich sposobów jest sformalizowanie listy użytkowników w systemie, a następnie dodanie jej jako podkomendy do -uargumentu w następujący sposób:

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

Aby pokazać, że dzięki temu wszyscy użytkownicy są lokalnie, możesz uzyskać unikalną listę użytkowników:

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

Problemy?

Jednym z problemów jest to, że jeśli użytkownik drukujący do CUPS nie ma konta lokalnego, nie zostanie wyświetlony.

Ale jeśli masz katalog zawierający pliki kontrolne LPD, zazwyczaj jest to ustawienie / var / spool / cups , you'll notice a bunch of control files in there. These files are kept as a result of theMaxJobs`, które domyślnie wynosi 500, gdy jest rozbrojone.

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

Innym źródłem nazw użytkowników?

Jeśli przejrzysz te pliki, zauważysz, że zawierają one nazwy użytkowników, a nie tylko te dla kont obecnych w systemie.

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

Abyśmy mogli wybrać wszystkie wpisy zawierające nazwę użytkownika, a następnie 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

Tę listę można następnie dostosować w taki sam sposób, jak pierwotnie używaliśmy do pobierania listy użytkowników getent passwd, w następujący sposób:

$ 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

Bibliografia

slm
źródło
0

Każda powyższa odpowiedź wydaje się być zainteresowana tylko ukończonymi zadaniami ...

Co jeśli jesteś zainteresowany ofertami, które zostały anulowane przez użytkownika lub administratora? Co zrobić, jeśli chcesz wiedzieć, ile zadań zostało przerwanych przez sam system drukowania z powodu sterownika lub innych problemów?

W tych przypadkach użyj:

lpstat -W all -o

Możesz także dowiedzieć się więcej o każdym zadaniu. W takim przypadku dodaj -ldługi format wyjściowy:

lpstat -l -W all -o
Kurt Pfeifle
źródło
-2

To polecenie wydaje się wyczyścić historię, a także wszelkie aktywne zadania:

sudo cancel -a -x
Mark Lord
źródło