CUPS 프린터 작업 기록을 표시하는 방법은 무엇입니까?

CUPS 프린터 작업 기록을 표시하는 방법은 무엇입니까?

나는 lpr 명령을 사용하여 원격 컴퓨터에서 네트워크 프린터로 일부 파일을 인쇄하고 있습니다. 분명히 작동하지만 몇 분 후 lpstat 또는 lpq를 입력하면 작업이 사라지고 파일이 인쇄되었을 수 있습니다. 프린터 대기열에서 성공적으로 완료된 작업의 기록이나 로그를 확인할 수 있는 방법이 있습니까?

답변1

예, 프로그램이 있습니다: lpstat- 컵 상태 정보 인쇄

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

또는 원하는 경우웹 페이지:

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

친절한 안부

답변2

시도했을 때 또 다른 대답은 다음과 같은 결과를 가져왔습니다.

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

사용자를 추가하면 saml사용자 기록을 얻을 수 있습니다.

$ 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

그런데 -u allU&L Q&A에 언급된 제목은 다음과 같습니다.명령줄에서 모든 사용자의 인쇄 작업 보기나를 위해 아무것도 하지 않았습니다.

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

이상한 점은 내가 이것을 할 수 있다는 것입니다.

$ 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

따라서 해킹은 시스템의 사용자 목록을 공식적으로 결정한 다음 이를 -u다음과 같이 매개변수에 하위 명령으로 추가하는 것입니다.

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

모든 사용자를 로컬로 볼 수 있다는 것을 보여주기 위해 다음과 같은 고유한 사용자 목록을 얻을 수 있습니다.

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

질문?

이에 대한 한 가지 문제는 CUPS로 인쇄하는 사용자가 로컬 계정이 없으면 해당 계정이 나타나지 않는다는 것입니다.

그러나 LPD 제어 파일이 포함된 디렉터리가 있는 경우 일반적으로 /var/spool/cups , you'll notice a bunch of control files in there. These files are kept as a result of theMaxJobs가 설정되고 설정되지 않은 경우 기본값은 500입니다.

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

사용자 이름의 또 다른 소스는 무엇입니까?

이러한 파일을 살펴보면 시스템에 존재하는 계정의 사용자 이름뿐만 아니라 사용자 이름도 포함되어 있음을 알 수 있습니다.

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

따라서 사용자 이름 뒤에 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

getent passwd그런 다음 이 목록은 원래 다음과 같이 에서 사용자 목록을 가져오는 데 사용한 것과 동일한 방식으로 조정될 수 있습니다 .

$ 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

인용하다

답변3

제 생각에는 /var/log/cups/page_log등이 일을 완수한 역사가 있다고 생각합니다.

또 다른 옵션은 웹 인터페이스입니다.

http://localhost:631/ 

또한 완료된 작업도 표시됩니다. 웹 인터페이스가 정보를 어디서 가져오는지 잘 모르겠습니다.

답변4

다른 사용자의 작업을 보려면 어떤 이유로든 -u값 없이 작업을 지정하십시오(적어도 내 시스템에서는).

lpstat -W completed -u

관련 정보