한 서버의 CUPS가 다른 CUPS 서버와 동일한 프린터 세트를 갖도록 설정하고 있습니다. 저는 주로 CLI를 사용하는데, 프린터 목록이 너무 많아서 이게 얼마나 쉬울 수 있는지 궁금합니다. 명령에 대한 문서를 살펴보면 다음과 같이 프린터를 추가할 수 있다는 것을 알았습니다.
lpadmin -p $printer_name -E -v $printer_location -m $printer_model
다음을 사용하여 $printer_name
s 및 s를 얻을 수 있습니다 $printer_location
.
lpstat -v
$printer_model
하지만 각 프린터를 알려주는 명령을 찾을 수 없는 것 같습니다. 나는 사람이 읽을 수 있는 모델을 얻기 http://localhost:631
위해 긁어낸 curl
다음 일치하는 lpinfo -m
것을 얻기를 원 lpadmin -m
하지만 좀 더 전통적인 것을 원합니다.
답변1
/etc/cups/ppd/
ppd 파일 및 (보호된) 파일에서 일부 콘텐츠를 grep 할 수 있지만 /etc/cups/printers.conf
cup 라이브러리에는 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
. pycups
rpm 패키지에서 찾았 습니다 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
.