Come mostrare la cronologia dei lavori della stampante CUPS?


14

Sto stampando alcuni file da un computer remoto su una stampante di rete con il comando lpr. Apparentemente ha funzionato, ma alcuni minuti dopo, quando ho digitato lpstat o lpq, il lavoro era già scomparso, probabilmente aveva già stampato il file. Esiste un modo per controllare la cronologia o il registro dei miei lavori completati correttamente nella coda di stampa?


Ovviamente non ho accesso alla stampante in questo momento, quindi non posso verificare se il file è stato stampato o meno.
Santi,

Tramite l'interfaccia web è facile.
Faheem Mitha,

Cos'è, potresti spiegarci un po 'di più?
Santi,

Risposte:


30

Sì, esiste un programma: lpstat- stampa le informazioni sullo stato delle tazze

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

O se preferisci tramite le seguenti pagine Web :

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

Cordiali saluti


3
Questo mostrerà solo il completato per il tuo userid. Si può dare un elenco di utenti come questo: lpstat -W completed -u user1,user2.
slm

Lpstat ha una finestra mobile per la cronologia dei lavori di stampa completati o mostra tutti i lavori che sono mai stati completati?
chinnychinchin

4

Penso che /var/log/cups/page_logecc. Abbia la storia di lavori completati.

Un'alternativa è l'interfaccia web

http://localhost:631/ 

che mostra anche i lavori completati. Non sono sicuro da dove l'interfaccia web ottenga le sue informazioni.


4

L'altra risposta, una volta provata, ha prodotto quanto segue:

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

L'aggiunta di un utente samlti fornisce la cronologia di quell'utente:

$ 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

Ma quanto -u allmenzionato in queste domande e risposte U&L dal titolo: Visualizza tutti i lavori di stampa dell'utente dalla riga di comando non ha fatto nulla per me.

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

Curiosamente potrei farlo:

$ 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

Quindi un modo hacker per farlo sarebbe quello di formalizzare un elenco di utenti sul tuo sistema e quindi aggiungerlo come sottocomando -uall'argomento in questo modo:

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

Solo per mostrare che questo vede tutti gli utenti localmente puoi ottenere un elenco unico dei tuoi utenti in questo modo:

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

Problemi?

Un problema con questo è se l'utente che stampa su CUPS non ha un account localmente, quindi non verrà visualizzato.

Ma se hai una directory che contiene i tuoi file di controllo LPD, in genere è l' , you'll notice a bunch of control files in there. These files are kept as a result of theimpostazione / var / spool / cups MaxJobs`, che per impostazione predefinita è 500 quando non impostata.

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

Un'altra fonte di nomi utente?

Se guardi attraverso questi file noterai che contengono nomi utente e non solo quelli per gli account presenti sul sistema.

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

Quindi potremmo selezionare tutte le voci che contengono il nome utente seguito da 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

Questo elenco può quindi essere adattato allo stesso modo in cui stavamo usando originariamente per prendere l'elenco degli utenti getent passwd, in questo modo:

$ 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

Riferimenti


0

Ogni risposta sopra sembra interessata solo a lavori completati ...

Cosa succede se si è interessati anche a lavori che sono stati annullati dall'utente o da un amministratore? Cosa succede se si desidera sapere quanti lavori sono stati interrotti dal sistema di stampa stesso, a causa di driver o altri problemi?

Per questi casi utilizzare:

lpstat -W all -o

Inoltre, potresti voler conoscere maggiori dettagli su ciascun lavoro. In questo caso aggiungi -lper un formato di output lungo:

lpstat -l -W all -o

-2

Questo comando sembra cancellare la cronologia e tutti i lavori attivi:

sudo cancel -a -x
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.