web-dev-qa-db-fra.com

Comment montrer l'historique des travaux d'imprimante CUPS?

J'imprime des fichiers d'un ordinateur distant à une imprimante réseau avec la commande LPR. Il a apparemment travaillé, mais quelques minutes plus tard, lorsque j'ai tapé LPSTAT ou LPQ, le travail avait déjà disparu, il avait probablement déjà imprimé le fichier. Existe-t-il un moyen de vérifier l'historique ou le journal de mes travaux terminés avec succès dans la file d'attente de l'imprimante?

14
Santi

Oui, un programme existe: lpstat - Informations sur les tasses d'impression

$ 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 si vous préférez via les suivantes pages Web:

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

Bien à vous

30

Je pense /var/log/cups/page_log etc. a l'historique des emplois terminés.

Une alternative est l'interface Web

http://localhost:631/ 

qui montre également des emplois terminés. Je ne sais pas où l'interface Web obtient ses informations.

5
Faheem Mitha

L'autre réponse lorsque j'ai essayé de produire ce qui suit:

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

Ajout d'un utilisateur, saml vous donne l'historique de l'utilisateur:

$ 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

Mais le -u all mentionné dans cet intitulé U & L titré: Voir tous les travaux d'impression de l'utilisateur à partir de la ligne de commande n'a rien fait pour moi.

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

Curieusement je pourrais faire ceci:

$ 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

Donc, une façon pirate de faire cela serait de formaliser une liste des utilisateurs sur votre système, puis de l'ajouter comme une sous-commande au -u argument comme si:

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

Juste pour montrer que cela voit tous les utilisateurs localement, vous pouvez obtenir une liste unique de vos utilisateurs comme alors:

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

Problèmes?

Un problème avec ceci est si l'utilisateur d'imprimer sur des gobelets n'a pas de compte localement, ils ne seront pas affichés.

Mais si vous avez un répertoire contenant vos fichiers de contrôle LPD, c'est typiquement il s'agit/var/spool/cups, you'll notice a bunch of control files in there. These files are kept as a result of theMAxJobs 'Réglage, qui par défaut à 500 quand non défini.

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

Une autre source de noms d'utilisateur?

Si vous regardez via ces fichiers, vous remarquerez qu'ils contiennent des noms d'utilisateur et non seulement des comptes présents sur le système.

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

Nous pourrions donc sélectionner toutes les entrées contenant le nom d'utilisateur suivi du 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

Cette liste peut ensuite être adaptée de la même manière que nous utilisions à l'origine pour prendre la liste des utilisateurs de getent passwd, ainsi:

$ 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

Les références

4
slm

Chaque réponse ci-dessus semble être seulement intéressée par complété emplois ...

Et si vous êtes également intéressé par des emplois qui étaient annulés par l'utilisateur ou un administrateur? Et si vous voulez savoir combien d'emplois ont été avorté par le système d'impression lui-même, en raison du conducteur ou d'autres problèmes?

Pour ces cas, utilisez:

lpstat -W all -o

De plus, vous voudrez peut-être connaître plus de détails sur chaque travail. Dans ce cas, ajoutez -l Pour un long format de sortie:

lpstat -l -W all -o
0
Kurt Pfeifle