Como mostrar o histórico de trabalhos da impressora CUPS?

14

Estou imprimindo alguns arquivos de um computador remoto em uma impressora de rede com o comando lpr. Aparentemente funcionou, mas alguns minutos depois, quando digitei lpstat ou lpq, o trabalho já havia desaparecido, provavelmente já havia impresso o arquivo. Existe uma maneira de verificar o histórico ou o log dos meus trabalhos concluídos com sucesso na fila da impressora?

Santi
fonte
É claro que não tenho acesso à impressora no momento e, portanto, não posso verificar se o arquivo foi impresso ou não.
Santi
Através da interface web é fácil.
Faheem Mitha
O que é isso, você poderia explicar um pouco mais?
Santi
localhost: 631 .
Faheem Mitha

Respostas:

30

Sim, existe um programa: lpstat- informações sobre o status dos copos de impressão

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

Ou, se preferir, através das seguintes páginas da web :

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

Atenciosamente

Alexis-Emmanuel Haeringer
fonte
3
Isso mostrará apenas o ID do usuário concluído. Você pode dar uma lista de usuários como este: lpstat -W completed -u user1,user2.
slm
O lpstat tem uma janela rolante para o histórico de trabalhos de impressão concluídos ou mostra todos os trabalhos que já foram concluídos?
chinnychinchin
4

Eu acho que /var/log/cups/page_logetc. tem o histórico de trabalhos concluídos.

Uma alternativa é a interface da web

http://localhost:631/ 

que também mostra trabalhos concluídos. Não tenho certeza de onde a interface da Web obtém suas informações.

Faheem Mitha
fonte
4

A outra resposta, quando tentada, produziu o seguinte:

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

A adição de um usuário samlfornece o histórico desse usuário:

$ 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

Mas o -u allmencionado nesta seção de perguntas e respostas da U&L intitulado: Visualizar todos os trabalhos de impressão do usuário na linha de comando não fez nada por mim.

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

Curiosamente, eu poderia fazer isso:

$ 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

Portanto, uma maneira imprudente de fazer isso seria formalizar uma lista dos usuários em seu sistema e adicioná-la como um subcomando ao -uargumento da seguinte maneira:

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

Apenas para mostrar que ele vê todos os usuários localmente, você pode obter uma lista exclusiva de usuários da seguinte forma:

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

Problemas?

Um problema é que, se o usuário imprimindo no CUPS não tiver uma conta localmente, ele não será exibido.

Mas se você tiver um diretório que contenha seus arquivos de controle LPD, normalmente é a , you'll notice a bunch of control files in there. These files are kept as a result of theconfiguração / var / spool / cups MaxJobs`, cujo padrão é 500 quando não definido.

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

Outra fonte de nomes de usuário?

Se você pesquisar esses arquivos, notará que eles contêm nomes de usuário, e não apenas nomes de contas que estão presentes no sistema.

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

Assim, poderíamos selecionar todas as entradas que contêm o nome de usuário seguido pelo 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

Essa lista pode ser adaptada da mesma maneira que usamos originalmente para obter a lista de usuários getent passwd, da seguinte forma:

$ 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

Referências

slm
fonte
0

Todas as respostas acima parecem estar interessadas apenas em trabalhos concluídos ...

E se você também estiver interessado em trabalhos que foram cancelados pelo usuário ou administrador? E se você quiser saber quantos trabalhos foram abortados pelo próprio sistema de impressão devido a drivers ou outros problemas?

Para esses casos, use:

lpstat -W all -o

Além disso, você pode querer saber mais detalhes sobre cada trabalho. Nesse caso, adicione -lum formato de saída longo:

lpstat -l -W all -o
Kurt Pfeifle
fonte
-2

Este comando parece limpar o histórico e todos os trabalhos ativos:

sudo cancel -a -x
Mark Lord
fonte