Exibir registro de data e hora para trabalhos de impressão CUPS

1

Estou procurando uma maneira de visualizar o registro de data e hora de um trabalho no CUPS. Eu procurei nas páginas do manual e não consigo encontrá-lo.

O objetivo a longo prazo é ter um script que analise o tempo a partir do jobID e exclua automaticamente qualquer tarefa que tenha mais de uma certa idade - para evitar sobrecarregar o servidor. Meu servidor CUPS tem mais de 2000 filas de impressão.

    
por forraceg 08.10.2014 / 01:46

2 respostas

1

Eu encontrei as seguintes 2 perguntas dentro do site U & L que parecem dar dicas como uma maneira possível de fazer isso. Essas duas perguntas:

Pode parecer que você pode usar lpstat para conseguir o que deseja. Percebi que eu poderia executar este comando:

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

E este aqui:

$ 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 all não fez nada para 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

Assim, uma maneira rápida de fazer isso seria formalizar uma lista dos usuários em seu sistema e adicioná-la como um subcomando ao argumento -u da seguinte forma:

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

Só para mostrar que isso mostra todos os usuários localmente, você pode obter uma lista exclusiva de seus usuários assim:

$ 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 com isso é que, se o usuário que está imprimindo no CUPS não tiver uma conta local, ela não será exibida.

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

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

Outra fonte de nomes de usuários?

Se você examinar esses arquivos, perceberá que eles contêm nomes de usuários e não apenas aqueles 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, podemos selecionar todas as entradas que contenham 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

Esta lista pode então ser adaptada da mesma forma como estávamos usando originalmente para pegar a lista de usuários de getent passwd , assim:

$ 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

por 08.10.2014 / 04:59
0

Eu tenho outra abordagem talvez mais simples para limpar trabalhos de impressão antigos. Em vez de encontrar uma maneira de converter os carimbos de hora abreviados nos trabalhos de impressão, é mais fácil usar o comando Localizar para realizar a tarefa de excluir trabalhos de impressão antigos que se ajustam a um determinado critério. Por exemplo, se você quiser encontrar trabalhos de impressão com mais de 4 dias:

find /var/spool/cups -name "*-001" -mtime +4

Todos os trabalhos de impressão ativos em xícaras possuem arquivos em /var/spool/cups com a extensão -001 . Depois disso, é só uma questão de usar sua ferramenta de manipulação de strings favorita para capturar o número real do trabalho de impressão da saída.

    
por 09.02.2016 / 21:19