Как разобрать файл управления заданиями CUPS '/ var / spool / cups / cNNNNNN'? - PullRequest
0 голосов
/ 09 декабря 2018

При печати задания на сервер CUPS вы можете настроить параметры cupsd.conf PreserveJobHistory и PreserveJobFiles, чтобы контролировать, сколькозадания, которые вы хотите сохранить.

CUPS всегда временно сохраняет фактические файлы заданий на печать в каталоге /var/spool/cups/.Файлы спула, представленные клиентом печати (до запуска цепочки фильтров CUPS), всегда называются dNNNNNN-001 (начиная с «d», как в «файле данных»), где NNNNNN - это идентификатор задания, назначенный CUPS.Если вы отправляете задание на печать нескольких документов, файл спула второго документа с тем же идентификатором задания называется dNNNNNN-002 и т. Д. *

Кроме того, тот же каталог будетудерживайте файлы, начинающиеся с другого символа, управляющих файлов , и они будут называться cNNNNNN для каждого задания.

Я хочу разбирать файлы этих управляющих файлов.

Когда я использую инструмент strings, он показывает только часть того, что я хочу получить:

Пример:

 sudo strings /var/spool/cups/d00089

  attributes-charset
  utf-8H
  attributes-natural-language
  en-us
  printer-uri
  %ipp://localhost:631/printers/hp2B
  job-originating-user-name
  kurtpfeifleB
  job-name
  hosts!
  copies
  finishings
  job-cancel-after
  job-hold-until
  no-hold!

  job-priority
  job-sheets
  noneB
  none!
  number-up
  job-uuid
  -urn:uuid:ca854775-f721-34a5-57e0-b38b8fb0f4c8B
  job-originating-host-name
  localhost!
  time-at-creation
  time-at-processing
  time-at-completed
  job-id
  job-state
  job-state-reasons
  processing-to-stop-point!
  job-media-sheets-completed
  job-printer-uri
  (ipp://host13.local:631/printers/hp!

  job-k-octets
  document-format
  text/plainA
  job-printer-state-message
  job-printer-state-reasons
  none

Кроме того, этоstrings вывод выглядит не очень хорошо.

Вопрос: Существует ли программный (или другой) способ для разбора этих файлов управления заданиями CUPS и получения их полного содержимого со всеми включеннымиИнформация

1 Ответ

0 голосов
/ 09 декабря 2018

Сам нашел ответ ...

Когда вы компилируете CUPS из источников, появляется подкаталог cups .Он также содержит Makefile , специфичный для этого подкаталога.Этот Makefile содержит цель сборки с именем "unittests" , которая NOT построена по умолчанию!

Но если вы запустите make unittests он не только запускает свои модульные тесты, но и создает несколько утилит командной строки, которые потенциально могут быть весьма полезны и вне модульных тестов!

Для решения моей проблемы,оказывается, что утилита CLI testipp - чистое золото.Смотрите сами:

sudo ./testipp /var/spool/cups/c00089

 operation-attributes-tag:

     attributes-charset (charset): utf-8
     attributes-natural-language (naturalLanguage): en-us

 job-attributes-tag:

     printer-uri (uri): ipp://localhost:631/printers/hp
     job-originating-user-name (nameWithoutLanguage): kurtpfeifle
     job-name (nameWithoutLanguage): hosts
     copies (integer): 1
     finishings (enum): none
     job-cancel-after (integer): 10800
     job-hold-until (keyword): no-hold
     job-priority (integer): 50
     job-sheets (1setOf nameWithoutLanguage): none,none
     number-up (integer): 1
     job-uuid (uri): urn:uuid:ca854775-f721-34a5-57e0-b38b8fb0f4c8
     job-originating-host-name (nameWithoutLanguage): localhost
     time-at-creation (integer): 1472022731
     time-at-processing (integer): 1472022731
     time-at-completed (integer): 1472022732
     job-id (integer): 89
     job-state (enum): completed
     job-state-reasons (keyword): processing-to-stop-point
     job-media-sheets-completed (integer): 0
     job-printer-uri (uri): ipp://host13.local:631/printers/hp
     job-k-octets (integer): 1
     document-format (mimeMediaType): text/plain
     job-printer-state-message (textWithoutLanguage): Printing page 1, 4% complete.
     job-printer-state-reasons (keyword): none

К сожалению, запуск make install не приведет к установке этого инструмента в систему, и, следовательно, он никогда не будет выставлен ни одному администратору CUPS!Кроме того, дистрибутивы Linux могут легко пропустить это.testipp работает под радаром для большинства фанатов CUPS.

Есть еще несколько полезных утилит, построенных из make unittests:
Этиявляются: testadmin, testarray, testcache, testclient, testconflicts, testcreds, testcups, testdest, testfile, testgetdests, testhttp, testi18n, testlang, testoptions, testppd, testpwg, testraster, testsnmp.

К сожалению, ни один дистрибутив Linux в настоящее время не собирает и не поставляет эти полезные инструменты. Так что, если вы знаете упаковщик дистрибутивов, укажите ему на это открытие здесь и попросите ее упаковать хороший пакет для всех конечных пользователей cups-test-utils.rpmили cups-test-utils.deb или cups-test-utils.tgz, или каковы бы ни были суффиксы имени пакета для его $ distro!`

...