¿Cómo mostrar el historial de trabajos de la impresora CUPS?


14

Estoy imprimiendo algunos archivos desde una computadora remota a una impresora de red con el comando lpr. Aparentemente funcionó, pero unos minutos después, cuando escribí lpstat o lpq, el trabajo ya había desaparecido, probablemente ya había impreso el archivo. ¿Hay alguna forma de verificar el historial o el registro de mis trabajos completados con éxito en la cola de la impresora?


Por supuesto, no tengo acceso a la impresora en este momento y, por lo tanto, no puedo verificar si el archivo se imprimió o no.
Santi

A través de la interfaz web es fácil.
Faheem Mitha

¿Qué es eso, podrías explicar un poco más?
Santi

Respuestas:


30

Sí, existe un programa: lpstat- imprimir información de estado de tazas

$ 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 si lo prefiere a través de las siguientes páginas web :

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

Saludos cordiales


3
Esto solo mostrará el completado para su ID de usuario. Se puede dar una lista de usuarios de este tipo: lpstat -W completed -u user1,user2.
slm

¿Tiene lpstat una ventana móvil para el historial de trabajos de impresión completado, o muestra todos los trabajos que alguna vez se completaron?
chinnychinchin

4

Creo que /var/log/cups/page_logetc. tiene la historia de trabajos completados.

Una alternativa es la interfaz web.

http://localhost:631/ 

que también muestra trabajos completados. No estoy seguro de dónde obtiene la información la interfaz web.


4

La otra respuesta cuando se intentó produjo lo siguiente:

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

Agregar un usuario samlle brinda el historial de ese usuario:

$ 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

Pero lo -u allmencionado en este Q&A de U&L titulado: Ver todos los trabajos de impresión de los usuarios desde la línea de comando no hizo nada por mí.

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

Curiosamente podría hacer esto:

$ 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

Entonces, una forma hack de hacer esto sería formalizar una lista de los usuarios en su sistema y luego agregarla como un subcomando al -uargumento de la siguiente manera:

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

Solo para mostrar que esto ve a todos los usuarios localmente, puede obtener una lista única de sus usuarios de esta manera:

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

¿Cuestiones?

Un problema con esto es que si el usuario que imprime en CUPS no tiene una cuenta local, entonces no se mostrarán.

Pero si tiene un directorio que contiene sus archivos de control LPD, generalmente es la , you'll notice a bunch of control files in there. These files are kept as a result of theconfiguración / var / spool / cups MaxJobs, que por defecto es 500 cuando está desarmado.

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

Otra fuente de nombres de usuario?

Si revisa estos archivos, notará que contienen nombres de usuario, y no solo los de las cuentas que están presentes en el sistema.

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

Entonces podríamos seleccionar todas las entradas que contienen el nombre de usuario seguido de la 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

Esta lista se puede adaptar de la misma manera que originalmente utilizamos para tomar la lista de usuarios getent passwd, de esta manera:

$ 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

Referencias


0

Cada respuesta anterior parece estar solo interesada en trabajos completados ...

¿Qué sucede si también está interesado en trabajos que fueron cancelados por el usuario o un administrador? ¿Qué sucede si desea saber cuántos trabajos fueron cancelados por el propio sistema de impresión, debido al controlador u otros problemas?

Para estos casos use:

lpstat -W all -o

Además, es posible que desee conocer más detalles sobre cada trabajo. En este caso, agregue -lpara un formato de salida largo:

lpstat -l -W all -o

-2

Este comando parece borrar el historial, así como cualquier trabajo activo:

sudo cancel -a -x
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.