"lpadmin -m"과 함께 사용할 기존 프린터의 모델/드라이버/ppd를 가져오는 명령이 있습니까?

"lpadmin -m"과 함께 사용할 기존 프린터의 모델/드라이버/ppd를 가져오는 명령이 있습니까?

한 서버의 CUPS가 다른 CUPS 서버와 동일한 프린터 세트를 갖도록 설정하고 있습니다. 저는 주로 CLI를 사용하는데, 프린터 목록이 너무 많아서 이게 얼마나 쉬울 수 있는지 궁금합니다. 명령에 대한 문서를 살펴보면 다음과 같이 프린터를 추가할 수 있다는 것을 알았습니다.

lpadmin -p $printer_name -E -v $printer_location -m $printer_model

다음을 사용하여 $printer_names 및 s를 얻을 수 있습니다 $printer_location.

lpstat -v

$printer_model하지만 각 프린터를 알려주는 명령을 찾을 수 없는 것 같습니다. 나는 사람이 읽을 수 있는 모델을 얻기 http://localhost:631위해 긁어낸 curl다음 일치하는 lpinfo -m것을 얻기를 원 lpadmin -m하지만 좀 더 전통적인 것을 원합니다.

답변1

/etc/cups/ppd/ppd 파일 및 (보호된) 파일에서 일부 콘텐츠를 grep 할 수 있지만 /etc/cups/printers.confcup 라이브러리에는 pycups정보를 얻기 위해 서버와 통신할 수 있는 Python 인터페이스가 있습니다. 예를 들어,

#!/usr/bin/python3
import cups
conn = cups.Connection()
printers = conn.getPrinters()
for printer in printers:
    p = printers[printer]
    print(printer, p['printer-make-and-model'])

반환된 프린터 사전에는 다음 항목이 포함되어 있습니다 printer-make-and-model printer-is-shared printer-type device-uri printer-location printer-uri-supported printer-state-message printer-info printer-state-reasons printer-state. pycupsrpm 패키지에서 찾았 습니다 python3-cups.

답변2

설치된 프린터용 드라이버를 가져오는 일반 명령은 없습니다.

다음은 meuh의 라이브러리 사용 제안에 따라 lpadmin -m허용되는 ppd 사양(상대 경로 및/또는 URI)을 나열하는 drv:///솔루션 입니다.gutenprint*://

# hpcups and gutenprint put their version in the model names. That means
# that if you install a printer then update the drivers, the model of the
# printer won't match with those available listed by `lpinfo -m`. So, we'll
# strip the version.
strip_versions() {
  sed -E 's/(, hpcups|- CUPS\+Gutenprint).*//'
}

# Using @ as a custom field delimiter since model names have whitespace.
# `join` is to match the printers' model names with those of the available
# drivers.
join -t@ -j2 -o 1.1,2.1 \
  <(
    ruby -r cupsffi -e '
      CupsPrinter.get_all_printer_attrs.each do |name, attrs|
        puts "#{name}@#{attrs["printer-make-and-model"]}"
      end
    ' | strip_versions | sort -t@ -k2
  ) \
  <(lpinfo -m | sed 's/ /@/' | strip_versions | sort -t@ -k2) |
# We may get multiple ppd specs per printer. For a few printers, I'm
# getting a relative path from the system model directory and either a
# drv:/// uri or a gutenprint.5.3:// URI. We'll filter out all but the
# first per printer.
awk -F@ '!a[$1]++' |
# Change the @ column delimiter for whitespace and align columns.
column -ts@ 

cupsffi마운트 가능한 루비 보석입니다 gem install cupsffi.

관련 정보