Последнее изменение файла: 2008.10.16
Скопировано с www.bog.pp.ru: 2024.11.03
Bog BOS: Сетевая печать
Подсистема сетевой печати состоит из:
- принтера
- устройства подключения принтера к сети (м.б. встроено в принтер)
- оборудования и программ, образующих локальную сеть:
ethernet,
TCP/IP
- BOOTP сервера (получение параметров подключения
к сети: IP адрес и т.п.)
- TFTP сервера (получение прочих параметров
сервера)
- средства управления принтером на основе протокола
SNMP
- lpd - сервер очереди печати (RFC1179)
- шрифты
- преобразователи форматов (если выходной формат прикладной программы не
соответствует формату принтера)
- прикладные программы
- ПО администратора планировщика печати
В качестве примера разберем подключение к сети обычного
принтера с помощью устройства HP JetDirect EX
(HP J2382B). Принтер подключается
к JetDirect с помощью усовершенствованного параллельного интерфейса
(Centronics, Bitronics, IEEE 1284). Все попавшиеся мне под руку принтеры
подключались без проблем.
JetDirect EX не имеет клавиатуры и экрана для настройки
и памяти для хранения параметров при отключении питания, поэтому все параметры
подключения к сети он получает при включении питания с помощью протокола
BOOTP (JetDirect, встроенный в принтер можно
настраивать с пульта принтера). Формат конфигурационного файла зависит от
реализации сервера BOOTP, но необходимо
обеспечить следующую информацию:
- тип оборудования: ethernet
(не 802.3!)
- MAC адрес
- IP адрес принтера
- маска сети
- адрес TFTP сервера (см. ниже)
- адрес сервера SYSLOG для передачи сообщений об
ошибках (источник по умолчанию: lpr; уровень: error, notice, info)
- простое имя принтера (рекомендую четную длину имени, т.к. я наткнулся
на ошибку в firmware)
- указание, что вспомогательная информация должна передаваться в
соответствии с RFC 1048 (RFC 1084)
- имя TFTP файла, содержащего прочие параметры принтера (рекомендуется
выбирать плохо угадываемое имя, т.к. этот файл может содержать
пароли SNMP доступа, а средств авторизации у протокола TFTP нет)
Файл, который JetDirect запрашивает с
TFTP сервера может содержать следующие
директивы:
- idle-timeout: 120 (в секундам, время удержания TCP соединения)
- syslog-facility: lpr, local0 - local7
- allow: адрес-сети маска-сети (до 10 штук, сюда обязательно надо
вписать список хостов, с которых разрешена печать, а то хакеры всю бумагу
изведут :)
- name: полное-доменное-имя (sysName)
- location: параметр-SNMP-sysLocation
- contact: параметр-SNMP-sysContact
- get-community-name: public (JetAdmin для MS W95/98 другого не понимает,
а доступ иметь хочет)
- set-community-name: большой-секрет
- trap-dest: адрес-для-посылки-SNMP-trap (до 4 штук)
- trap-community-name:
- authentication-trap: on
- old-idle-mode: off (принимать TCP соединение даже при выключенном принтере)
- subnets-local: off (использовать пакеты размером 1460 байт для нелокальных
подсетей, иначе 536 байт)
Теперь включаем оборудование:
- запускаем BOOTP сервер
- запускаем TFTP сервер
- настраиваем syslog сервер
- подключаем принтер к JetDirect
- подключаем JetDirect к Ethernet
- включаем питание JetDirect и наблюдаем в syslog сообщения от BOOTP,
а затем TFTP серверов о загрузке файлов
- включаем питание принтера и наблюдаем в syslog сообщение о готовности
устройства
- нажимаем на JetDirect кнопку "Test", чтобы вывести на печать страницу
состояния
После изменения любого параметра необходимо "передернуть"
питание JetDirect.
Наш JetDirect EX поддерживает модули RFC1213-MIB (mib-2)
и JETDIRECT3-MIB (hpnp.mib из старой поставки JetAdmin),
RFC 1759 не поддерживается. Видимо, описание SNMP переменных является
стратегическим секретом фирмы-изготовителя, но есть добрые люди,
коллекционирующие чужие секреты. Беру у них
JDMIB498 и
кладу в /usr/share/snmp/mib/JetDirect.mib (использую
ucd-snmp, AKA net-snmp).
Теперь можно получить всю имеющуюся у агента информацию по команде
snmpwalk -m RFC1213-MIB:JETDIRECT3-MIB -Of адрес-принтера имя-комьюнити .iso
В ветви .iso.org.dod.internet.mgmt.mib-2 доступна стандартная
для MIB-2 информация, часть которой может быть полезна (при опросе не забывайте добавлять
суфикс ".0"):
- system.sysDescr ("HP ETHERNET MULTI-ENVIRONMENT,B.00.01,JETDIRECT EX,")
- system.sysObjectID (.iso.org.dod.internet.private.enterprises.hp.nm.system.net-peripheral.net-printer)
- system.sysUpTime
- system.sysContact
- system.sysName
- system.sysLocation
- interfaces.ifTable.ifEntry.ifPhysAddress.1
- interfaces.ifTable.ifEntry.ifAdminStatus.1
- interfaces.ifTable.ifEntry.ifOperStatus.1
- interfaces.ifTable.ifEntry.ifInOctets.1 (имеется также множество других
счетчиков, из которых с помощью rrdtool можно сделать
красивые графики)
- at.atTable (содержит IP и MAC адреса пользователей)
- snmp.snmpInBadCommunityNames (кто ломился в дверь моя)
- snmp.snmpInBadCommunityUses
- snmp.snmpInSetRequests (администратиивных воздействий)
- snmp.snmpOutTraps
- snmp.snmpEnableAuthenTraps
Так как к JetDirect подключен принтер, сделанный не HP,
то полезной информации в ветви .iso.org.dod.internet.private.enterprises.hp.nm
немного (при опросе не забывайте добавлять суфикс ".0"):
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusLineState
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusPaperState
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusInterventionState
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusPeripheralError
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusPaperOut
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusPaperJam
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusTonerLow
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusMemoryOut
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusIoActive
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusBusy
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusWait
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusInitialize
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusDoorOpen
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusPrinting
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusPaperOutput
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusEntry.gdStatusTcpBusy
- system.net-peripheral.net-printer.generalDeviceStatus.gdStatusId содержит
информацию о принтере (изготовитель, модель, поддерживаемые языки,
текущий язык и состояние)
- interface.ieee8023Mac.ieee8023MacState (online)
- interface.npCard.npSys.npSysState (состояние сетевой карты)
- interface.npCard.npSys.npSysStatusMessage ("ready to print")
- interface.npCard.npSys.npSysPeripheralFatalError
- interface.npCard.npSys.npSysCardFatalError
- interface.npCard.npSys.npSysMaximumWriteBuffers (1)
- interface.npCard.npSys.npSysMaximumReadBuffers (7)
- interface.npCard.npSys.npSysTotalBytesRecvs
- interface.npCard.npSys.npSysTotalBytesSents
- interface.npCard.npSys.npSysCurrReadReq (число занятых буферов для чтения)
- interface.npCard.npConns.npConnsAccepts (количество принятых соединений)
- interface.npCard.npConns.npConnsRefuseds (из-за отсутствия ресурсов)
- interface.npCard.npConns.npConnsDenys (ACL violation)
- interface.npCard.npConns.npConnsDenysIP (адрес последнего нарушителя)
- interface.npCard.npConns.npConnsAborts (разорванных соединений)
- interface.npCard.npConns.npConnsAbortReason
- interface.npCard.npConns.npConnsAbortIP
- interface.npCard.npConns.npConnsAbortPort
- interface.npCard.npConns.npConnsAbortTime
- interface.npCard.npConns.npConnsState (есть ли сейчас соединение)
- interface.npCard.npConns.npConnsIP
- interface.npCard.npConns.npConnsPort
- interface.npCard.npConns.npConnsPeriphClose (число соединений, закрытых по требованию периферийного устройства)
- interface.npCard.npConns.npConnsIdleTimeouts (число соединений, закрытых по истечению времени ожидания)
- interface.npCard.npConns.npConnsNmClose (число соединений, закрытых по SNMP)
- interface.npCard.npConns.npConnsBytesRecvds (для текущего соединения)
- interface.npCard.npConns.npConnsBytesSents
- interface.npCard.npCfg.npCfgSource (bootp, manual, dhcp, rarp, ...)
- interface.npCard.npCfg.npCfgYiaddr (адрес клиента из BOOTP)
- interface.npCard.npCfg.npCfgSiaddr (адрес сервера из BOOTP)
- interface.npCard.npCfg.npCfgGiaddr (адрес шлюза из BOOTP)
- interface.npCard.npCfg.npCfgLogServer (адрес syslog из BOOTP)
- interface.npCard.npCfg.npCfgSyslogFacility
- interface.npCard.npCfg.npCfgAccessState (имеет ли запрашивающий хост
право на печать)
- interface.npCard.npCfg.npCfgAccessListNum и interface.npCard.npCfg.npCfgAccessListTable (список ACL)
- interface.npCard.npCfg.npCfgIdleTimeout
- interface.npCard.npCtl.npCtlReconfigIP (IP адрес хоста, запросившего
перезагрузку)
- interface.npCard.npCtl.npCtlReconfigPort
- interface.npCard.npCtl.npCtlReconfigTime (сколько 1/100 секунд назад была
перезагрузка)
- interface.npCard.npCtl.npCtlCloseIP (IP адрес хоста, запросившего
закрытие соединения с принтером)
- interface.npCard.npCtl.npCtlClosePort
- nterface.npCard.npCtl.npCtlProtocolSet (поддерживаемые протоколы: количество протоколов, количество одновременно обслуживаемых протоколов, битовая карта протоколов - NOVELL, LLC, TCP, ATALK; автоматический выбор протокола; 0x11000004 - TCP only?)
- trap.trapDest.trapDestinationNum и trapDestinationTable (адреса получателей trap: IP, port, community name)
JetDirect и присоединенным с его помощью к сети
принтером можно управлять, устанавливая следующие переменные
(управление IPX и AppleTalk опускаю):
- sysContact (MIB-2)
- sysName (MIB-2)
- sysLocation (MIB-2)
- gdPasswords (256 byte NVRAM for JetAdmin)
- npCfgSource (задание IP адреса устройства: manual-three(3) - в этом же пакете;
bootp-four(4); dhcp(5))
- npCfgYiaddr (адрес клиента из BOOTP)
- npCfgTcpMss (кого считать локальными соседями и посылать пакеты
по 1460 байт (остальным - по 536): 0 - всех; 1 - в одной сети; 2 - в одной подсети )
- npCtlCloseConnection (установка 1 закрывает текущее соединение)
- npCtlReconfig (установка 1 вызывает перезагрузку)
- npCtlProtocolSet (поддерживаемые протоколы - см. выше; 0x11000004 - TCP only?)
- npCtlStatusPageLang (на каком языке печатать страницу состояния:
1 - pcl, 2 - ascii, 3 - postscript, 4 - hpgl)
- npCtlPrintStatusPage (установка 1 вызывает печать страницы состояния)
- setCommunityName (по умолчанию - internal)
Еще это устройство позволяет посылать прерывания (trap),
но с ними я не разбирался.
Сервер очереди печати lpd (пакет lpr) запускается как обычный сервис
(/etc/rc.d/init.d/lpd start), считывает параметры из /etc/printcap. Запросы на постановку
задания в очередь, удаление из очереди и выдачу информации принимаются
через порт 515/tcp (/etc/services:printer) или сокет /dev/printer для локальных
запросов. Печать одного файла - одно задание. Каждое задание имеет уникальный номер.
Каждый запрос обслуживается отдельным
процессом (используется исключительная блокировка файлов, после аварийного завершения
процесса этот файл необходимо удалить, содержит pid и имя файла с описанием текущего
задания).
Запросы фильтруются с помощью файлов /etc/hosts.equiv и /etc/hosts.lpd
(содержит список хостов, с которых разрешена печать).
Запросы из каждой очереди обрабатываются по порядку, пропускаются через соответствующий
фильтр форматирования и либо выводятся на локальный принтер, либо передаются
удалённому серверу печати в соответствии с настройками в /etc/printcap.
Каждая очередь описывается отдельной строкой в /etc/printcap.
Файл считывается заново при обработке каждого задания, что позволяет вносить
изменения не останавливая сервер печати.
Символ "\" в конце строки является символом продолжения строки, продолжение на
следующей строке должно начинаться с табуляции. Символ "#" в начале строки
используется для комментариев.
Строка состоит из полей, разделённых двоеточиями. Первое поле определяет синонимы
очереди печати (разделяются символами "|"). Имя "lp" описывает очередь по умолчанию.
В начале каждого следующего поля указывается имя поля. Значение численного поля
отделяется от имени знаком '#', значение символьного поля - знаком '='. Поля с логическими
значениями по умолчанию равны false, их указание в описании очереди устанавливает
значение поля в true. Поля:
- af=имя-учётного-файла (каждое задание оставляет строки jobstart и jobend с информацией
о хосте, имени пользователя, имени очереди, времени, размере в байтах)
- if=имя-фильтра-для-текстовых-файлов (программа вызывается с параметрами:
if [-c] -w$pw -l$pl -iотступ -n имя-пользователя -h хост $af ("-c" передаётся, если
lpr был вызван с ключом "-l"))
- lf=имя-файла-сообщений-об-ошибках (/dev/console; для сообщений фильтров)
- lo=имя-файла-блокировки (lock)
- lp=имя-устройства (/dev/lp, д.б. пустым для удалённого сервера печати)
- mx#максимальный-размер-файла (в блоках BUFSIZ, 1000, 0 - нет ограничений)
- of=имя-выходного-фильтра (в отличие от if вызывается один раз на всех)
- pl#число-строк-на-странице (66)
- pw#число-символов-на-строке (132)
- px#пикселов-на-строке (0)
- py#пикселов-на-странице (0)
- rg=имя-группы (только члены группы могут печатать в эту очередь)
- rm=имя-хоста (притер подключён на указанном хосте)
- rp=имя-очереди-на-удалённом-хосте (lp)
- rs (разрешать печать только тем удалённым пользователям, которые имеют местные учётные
записи)
- rw (открывать устройство на чтение и запись)
- sb (короткий заголовок из одной строки)
- sc (игнорировать параметр, задающий число копий)
- sd=имя-каталога-для-очередей (/var/spool/lpd; один принтер на каталог!)
- sf (игнорировать перевод страницы)
- sh (не печатать заголовки страниц)
- st=имя-файла-состояния (status)
- ...
Очереди хранятся в /var/spool/lpd в каталогах, имена которых совпадают с именем очереди.
Сообщения записываются в syslog (тип LPR).
Файл minfree в каталоге, хранящем очередь, позволяет задать резервируемое на диске
место в блоках. Файлы, имена которых начинаются с "cf", содержат описания заданий,
первая буква каждой строки определяет значение строки:
- J - имя задания (задаётся прикладной программой, например: имя файла или _stdin_)
- C - класс (A)
- L - имя пользователя для печати в заголовке
- T - заголовок для pr
- H - имя хоста, на котором был запущен lpr
- P - имя пользователя, запустившего lpr
- M - почтовый адрес, куда послать извещение о завершении
- W - число символов в строке (для pr и прочих фильтров)
- I - отступ слева (в символах)
- U - удалить файл после печати
- S - файл является символьной ссылкой
- N - имя печатаемого файла (до форматирования) или _stdin_
- f - имя файла, содержащего уже отформатированный документ
- l - имя файла с отформатированным документом, содержит управляющие символы
- p - имя файла, который необходимо пропустить через pr перед печатью
- o - файл в формате Postscript
- t - файл в формате вывода troff
- n - файл в формате вывода ditroff
- r - файл в формате DVI
- g - файл в формате вывода plot
- c - файл в формате вывода cifplot
- v - файл в растровом формате
- r - текстовый файл с управляющими символами как в Фортране
- 1234 - имя файла, содержащего шрифт troff (форматы соответственно R, I, B, S)
Программа lpr ставит в очередь на печать (соединяется с локальным
сервером печати) указанный в качестве параметра файл.
Имя очереди по умолчанию берётся из переменной окружения PRINTER или /etc/printcap.
Ключи:
- -P имя-очереди-печати
- -# число-копий
- -m (послать письмо по завершению печати; LPRng позволяет указать почтовый адрес)
- -h (не печататать заголовок)
- -C имя-класса (использовать указанное имя в заголовке; LPRng использует для установки
приоритета: A - самый низкий, Z - самый высокий)
- -J имя-задания (использовать указанное имя в заголовке)
- -U имя-пользователя (использовать указанное имя в заголовке и для учёта,
разрешается только при выполнении с uid сервера печати - для перепостановки
в очередь)
- -r (удалить файл после помещения в очередь или завершения печати)
- -s (использовать символьную ссылку вместо копирования файла в очередь)
- -p (использовать pr для форматирования текстового файла)
- -T заголовок (передать программе pr для печати заголовков страниц)
- -i отступ (передаётся pr, в символах, по умолчанию - 8)
- -w ширина-страницы (передаётся pr, в символах)
- -l (печатаемый файл содержит управляющие символы и не нуждается в разбиении на страницы;
в LPRng можно использовать ключ -b)
- -t (файл в формате вывода troff)
- -n (файл в формате вывода ditroff)
- -d (печатаемый файл имеет формат DVI)
- -f (первый символ каждой строки файла интерпретируется как в Фортране)
- -g (печатаемый файл имеет формат plot)
- -c (печатаемый файл имеет формат cifplot)
- -B (использовать фильтры из /etc/printcap; все файлы одним потоком; LPRng)
- -G (использовать фильтры из /etc/printcap; каждый файл отдельно; LPRng)
- -F спецификация-формата-файла (по умолчанию, печатаемый файл считается текстовым
и к нему применяется фильтр f; LPRng)
- -k (не создавать временный файл при печати со стандартного ввода на удалённом
принтере; LPRng)
- -R учётная-запись-на-удалённом-компьютере (LPRng)
- -V (увеличить уровень болтливости; LPRng)
- -X имя-файла-дополнительного-фильтра (выполняется на исходном хосте; LPRng)
- -Y (вывод на печать в обход очереди; LPRng; для удалённой печати нужно указать
"-P хост%порт"; для печати на параллельный порт: "-P /dev/lp";
для печати с помощью программы: "-P '|программа"; прямая передача в очередь печати
на удалённом хосте: "-P очередь@хост" )
- -Z опция (нестандартные возможности принтеров; LPRng)
lpq - просмотр очереди местного сервера печати. В качестве параметров
может указываться идентификатор задания или имя пользователя. По умолчанию выдаётся
информация обо всех заданиях в очереди по умолчанию (задаётся переменной окружения
PRINTER или в /etc/printcap). Для очередей принтеров на удалённых компьютерах
делается запрос к соответствующему серверу печати (он, в свою очередь, также
может обратиться далее). Ключи:
- -P имя-очереди (LPRng: можно указывать имя-очереди@имя-хоста)
- -l (выдаётся более детальная информация; LPRng: дополнительные ключи "-l" увеличивают
количество информации)
- -L (максимально подробно; LPRng)
- -s (одной строкой; LPRng)
- -a (все очереди; LPRng)
- -t секунд (периодически опрашивать очередь; LPRng)
lpc - управление сервером печати.
Команда и параметры задаются в
командной строке или в интерактивном режиме. Команды:
- help [имя-команды]
- exit | quit
- status {all | имя-очереди}
- start {all | имя-очереди} (разрешить печать из очереди)
- stop {all | имя-очереди} (после завершения текущего задания запретить печать из
очереди)
- restart {all | имя-очереди} (перезапуск сервера после аварийного завершения)
- disable {all | имя-очереди} (запретить помещение новых заданий в очередь сервера печати)
- enable {all | имя-очереди} (разрешить помещение новых заданий в очередь локального
сервера печати)
- down {all | имя-очереди} сообщение (запретить помещение новых заданий в очередь сервера
печати, прекратить печать из очереди, поместить сообщение в строку состояния
очереди)
- up {all | имя-очереди} (разрешить помещение новых заданий в очередь, разрешить печать
из очереди, убрать текст сообщения)
- topq имя-очереди [идентификатор-задания] [имя-пользователя] (поместить задание
в начало очереди)
- abort {all | имя-очереди} (прервать задание, остановить выборку из очереди и остановить
сервер)
- clean {all | имя-очереди} (удалить мусор на локальном сервере)
- active имя-очереди (LPRng; проверить наличие сервера печати)
- class {all | имя-очереди} [off | список-классов | буква=шаблон] (LPRng;
из очереди на печать
будут выбираться только задания соответствующего класса; буква соответствует первому
символу строки управляющего файла запроса печати)
- defaultq (LPRng; вывести имя очереди печати по умолчанию)
- defaults (LPRng; вывести параметры по умолчанию)
- hold имя-очереди [идентификатор-задания] (LPRng; "заморозить" задание в очереди)
- release имя-очереди [идентификатор-задания] (LPRng)
- holdall {all | имя-очереди} (LPRng; "замораживать" все новые задания в очереди)
- noholdall {all | имя-очереди} (LPRng)
- kill {all | имя-очереди} (LPRng; перезапуск сервера после аварийного завершения)
- client {all | имя-очереди} (LPRng; вывести параметры по умолчанию и информацию
из printcap на локальном хосте с точки зрения клиента)
- server {all | имя-очереди} (LPRng; вывести параметры по умолчанию и информацию
из printcap на локальном хосте с точки зрения сервера)
- lpd имя-очереди (LPRng; проверить наличие сервера печати)
- move имя-очереди идентификатор-задания имя-очереди-назначения (LPRng; перенести
задание в другую очередь)
- msg имя-очереди сообщение (LPRng; установить текст сообщения для очереди)
- redirect имя-очереди [имя-очереди-назначения | off] (LPRng; все задания из очереди
перенаправлять в другую очередь)
- redo имя-очереди идентификатор-задания (LPRng; повторить печать)
- reread имя-очереди (LPRng; сервер (в т.ч. удалённый) перечитывает файлы настройки)
В реализации LPRng добавлена возможность указать "@имя-хоста" после
имени очереди и ключи:
- -P имя-очереди
- -S сервер
- -U имя-пользователя (использовать может только root)
lprm - удаление задания из очереди местного сервера печати.
По умолчанию удаляется текущее задание пользователя из очереди.
Имя очереди по умолчанию берётся из переменной окружения PRINTER или /etc/printcap.
Для очередей принтеров на удалённых компьютерах после очистки локальной очереди
делается запрос к соответствующему серверу печати (он, в свою очередь, также
может обратиться далее).
Для удаления конкретного задания необходимо узнать его идентификатор с помощью команды lpq.
Можно указать имя пользователя, задания которого необходимо удалить (проверяется имя
пользователя и имя хоста, на котором была выполнена команда lpr). Ключи:
- -P имя-очереди
- - (удаляются все задания, принадлежащие пользователю; суперпользователь может
полностью очистить очередь; в LPRng требуется использвать имя задания "all";
для удаления заданий изо всех очередей требуется использовать ключ -a)
pr - утилита для преобразования текстового файла перед печатью
(разбиение на страницы и колонки, отступы и заголовки, нумерация страниц).
pac - утилита обработки учётной информации (кто сколько страниц напечатал).
Имя очереди по умолчанию берётся из переменной окружения PRINTER или /etc/printcap.
Протокол LPD (RFC 1179) использует по умолчанию порт 515/tcp.
Исходящий порт должен быть привилегированным (менее 1024; в стандарте указано
от 721 до 731).
Первый байт сообщения определяет его тип, далее идёт имя очереди печати и параметры.
Сообщение завершается сиволом '\n'.
Типы сообщений:
- ^A - распечатать задания в указанной очереди
- ^B - поместить задание в очередь, при успешном завершении возвращается байт 0;
далее клиент посылает подкоманды управляющего файла (длина, имя файла -
"cfA" // номер-задания // имя-хоста, содержимое файла, ноль) и файла данных
(длина, имя файла - "dfA" // номер-задания // имя-хоста, содержимое файла, ноль);
после каждой подкоманды клиент ожидает код завершения
- ^C - вернуть краткую информацию о заданиях в очереди (в качестве параметров можно
передавать имена пользователей или идентификаторы заданий)
- ^D - вернуть полную информацию о заданиях в очереди (в качестве параметров можно
передавать имена пользователей или идентификаторы заданий)
- ^E - удалить задание из очереди (обязательно передаётся имя пользователя, затребовавшего
удаление; можно передавать имена пользователей или идентификаторы заданий)
В новых дистрибутивах Red Hat работа lpr, lpq, lprm эмулируется системами
LPRng или CUPS.
Пакет printtool (printtool-3.0-14 в RH4.1; printtool-3.29-3 и
rhs-printfilters-1.46-3 в RH5.2), написан на Tcl/Tk, обеспечивает
графический интерфейс для настройки /etc/printcap (локальные, удалённые и SMB принтеры).
Настроенный с помощью printtool /etc/printcap не стоит изменять вручную.
Для преобразования файлов в формате Postscript в формат печати используется ghostscript.
Каталог /usr/lib/rhs/printtool (/usr/lib/rhs/rhs-printfilters)
содержит набор фильтров (Postscript в ASCII, TIFF в PNM,
PNM в Postscript и др.), master-filter (автомагический фильтр, распознающий тип
печатаемого файла и строящий цепочку фильтров от исходного формата файла в формат,
понимаемый принтером), smbprint (скрипт для печати на SMB принтерах).
Команда lp посылает запрос на печать. В качестве аргументов
указываются имена файлов ("-" означает стандартный ввод). Ключи:
- -B (использовать фильтры из /etc/printcap; все файлы одним потоком; LPRng)
- -c (копировать файл перед печатью)
- -d имя-очереди-печати
- -f имя-формы (аналог lpr ключа -C)
- -G (использовать фильтры из /etc/printcap; каждый файл отдельно; LPRng)
- -m (посылать извещение о завершении печати по e-mail)
- -n число-копий
- -o опция (например: nobanner и width=число-символов)
- -P список-номеров-страниц
- -q приоритет (0 - высший, 25 - низший)
- -s (меньше сообщений)
- -S кодировка (LPRng)
- -t заголовок-титульной-страницы
- -T тип-файла (LPRng)
- -w (послать сообщение на терминал после завершения печати)
- -X имя-файла-дополнительного-фильтра
- -y режим-печати (LPRng)
Команда cancel посылает запрос на удаление запроса из очереди печати.
В качестве параметра указывается идентификатор запроса (возвращается командой lp)
или имя очереди. Ключи:
Команда lpstat выводит информацию о соостоянии подсистемы печати.
В качестве параметра указывается идентификатор запроса (возвращается командой lp)
или имя очереди. Ключи (вместо списка можно использовать магическое слово "all"):
- -a список-имён-очередей (принимает ли очередь запросы)
- -c список-классов (вывести список классов и их членов)
- -d (вывести имя очереди по умолчанию)
- -f список-форм (вывести список принтеров, поддерживающих указанную форму)
- -o список (состояние заданий; можно указывать имена очередей, имена классов,
идентификаторы заданий)
- -p список (состояние заданий; можно указывать имена очередей; -D добавляет описание
очередей)
- -r (вывести состояние планировщика заданий)
- -R (вывести положения заданий в очереди)
- -s (общее состояние системы печати)
- -S список-имён-очередей (кодировки принтеров)
- -t (вывести всю информацию о системе печати)
- -u список-uid
- -v список-имён-очередей (вывести имена устройств)
Работа lp, lpstat, cancel эмулируется системами
LPRng или CUPS.
Печать на лазерный принтер в RK осуществляется при нажатии
клавиш F4 и H (раскладка PC), если курсор находится в строке с именем файла.
Символы с атрибутом инверсия печатаются жирным шрифтом.
Символы с атрибутом пониженной яркости печатаются курсивом.
Строка с именем файла в файле-каталоге или строке запроса может содержать ключи печати.
RK запускает при этом скрипт /dss/bin/php с ключами и именем файла
(преобразование делает /dss/bin/prkhp, результат передаётся lpr [-P имя-очереди]).
Скрипт можно использовать и самостоятельно. Ключи также могут браться
(служебный скрипт /dss/rk/kph) из файлов
(приоритет в указанном порядке): имя-файла.ph, .суффикс.ph, .ph из каталога, /dss/bin/.ph.
Ключи (имеется множество дополнительных ключей для печати специальных файлов типа
платёжного поручения):
- -Pимя-очереди (возможна привязка к имени терминала (/dev/tty??) очереди печати по умолчанию,
/dss/config/lpr.tab; имя очереди печати можно также передать через переменую окружения PRINTER)
- -P (под пишмаш; /dss/rk/pb.lj)
- -M (под маленькую пишущую машинку; /dss/rk/pm.lj)
- -p (шрифт пайка, 77 символов)
- -pv (шрифт пайка, жирный, 77 символов)
- -c (шрифт цицеро, 95 символов)
- -cv (шрифт цицеро, жирный, 95 символов)
- -u (шрифт пайка, сжатый, 120 символов)
- -{O|o|C}отступ
- -интервал (-1, -1.5, -2)
- -строк-на-странице (-30, -42, -55, -64, -72, -85, -92)
- -L[72|55] (боком)
- -{B|b|buk} (боком в 2 колонки по 72 строки)
- -{N|n}экземпляров
- -D (двусторонняя печать)
- -LD (двусторонняя печать боком)
- -S (печать на одной стороне)
- -a (файл в кодировке cp866)
- -k (файл в кодировке KOI8-R; не совместим с -P и т.п.)
LPRng (ранее назывался PLP - Public Line Printer)
представляет собой улучшенную реализация сервера печати
lpr/lpd из Unix BSD. Умеет также имитировать поведение lp/lpstat из SystemV. Запросы
обоих форматов попадают в одну очередь. Поддерживает SSL аутентификацию,
балансировку загрузки (несколько принтеров на одну очередь), интерфейс с SAMBA.
Фильтр ifhp (ASCII, HP PCL, PostScript) не поставляется в дистрибутиве Red Hat.
В дополнение к /etc/printcap информация
может храниться в ~/.printcap. В printcap необязательно указывать '\' в конце строки
для продоления её на следующей строке, но первый значимый символ строки продолжения
д.б. ':'. Имеется оператор include (необходимо указывать абсолютное имя файла).
Числа можно записывать в шестнадцатеричном формате (0x1F). Логические переменные
можно устанавливать (:flag:) и сбрасывать (:flag@:). Дополнительные поля (некоторые):
- ae - формат для строки учёта завершения работы
- af - кроме имени файла можно указывать имя программы ('|' перед именем),
хост%порт
- all - список всех очередей (по соглашению заводится очередь с именем all,
содержащая только это поле)
- ar - учитывать передачу задания на удалённый сервер
- as - формат для строки учёта начала работы
- bk - полная совместимость со стандартом
- check_for_nonprintable
- check_for_protocol_violations
- cm - описание принтера
- create_files - автоматически создавать файлы (log и др.)
- default_format (f)
- default_printer (lp)
- default_priority (A)
- default_remote_host (localhost)
- done_jobs (1; хранить состояние последних выполненных заданий)
- done_jobs_max_age (0; секунд)
- fd - не принимать перенаправленных заданий
- filter - фильтр для печати по умолчанию
- force_localhost - запретить клиенстким программам обращаться к удалённым серверам
- full_time - выдавать полную дату в сообщениях
- fx - список допустимых форматов для фильтра
- ignore_requested_user_priority
- logger_destination (хост%порт,UDP)
- lp - кроме имени устройства может иметь формат имя-очереди@хост или |имя-программы
- lpd_port=printer (какой порт слушать, адрес%порт)
- mail_from
- mail_operator_on_error (адрес получателя)
- max_servers_active
- mc#1 (максимальное число копий)
- minfree (0; минимальное число KB в разделе)
- oh - задаёт список хостов (шаблонов), для которых данная запись действительна
- retry_econnrefused (true)
- save_on_error (false; при ошибке сохранять задание для расследования)
- send_failure_action=remove (success, abort, retry, hold, |/имя-программы;
что делать после исчерпания попыток послать задание на печать)
- send_try (3)
- sendmail (команда и параметры для посылки почты)
- server - данная запись действует только для сервера
По умолчанию, имя очереди берётся из переменной окружения
PRINTER, LPDEST, NPRINTER, NGPRINTER; если ни одна из них не установлена, то
используется первая строка /etc/printcap или значение default_printer в lpd.conf
Настройка LPRng и значения по умолчанию для printcap задаются в
/etc/lpd.conf (lpd.conf(5)). Начальные пробелы в строках игнорируются, комментарии
начинаются с символа '#'. Строка продолжения должна завершаться '\'.
Каждая строка задаёт значение параметра в виде (как в printcap)
- имя (подчёркивания и тире эквивалентны)
- имя@ (установка логического значения)
- имя=символьное-значение
- имя#численное-значение
Макроподстановка:
- %h - короткое имя хоста
- %H - полное имя хоста
- %a - имя архитектуры (aix, i386 и т.д.; устанавливается параметром architecture)
- %P - имя очереди из текущей секции printcap
- %R - имя удалённой очереди из текущей секции printcap
- %M - короткое имя хоста удалённой очереди из текущей секции printcap
Параметры:
- include имя-файла
- ...
- default_logger_port#2001
- default_logger_protocol=UDP
- default_printer=missingprinter
- default_priority=A
- default_remote_host=localhost
- done_jobs=1 (хранить информацию об указанном количестве напечатанных заданий)
- full_time@ (выдавать полную дату в журнал)
- lf=log (имя журнала)
- logger_destination="" (хост%порт,UDP)
- lpd_port=printer (адрес%порт)
- mail_operator_on_error=""
- mc#1 (максимальное число копий)
- rg=имя-группы (ограничить доступ к очереди членами указанной группы)
- send_failure_action=remove (abort, retry, hold, имя-программы;
что делать после исчерпания попыток послать задание на печать)
- ...
Права пользователей на печать определяются в файле /etc/lpd.perms
(параметр perms_path в /etc/lpd.conf). Комментарии начинаются с символа '#'.
Каждая строка файла содержит правило
ACCEPT или REJECT. Правила просматриваются последовательно до первого успеха.
Если не подошло ни одно правило, то используется значение из последней
директивы DEFAULT. Формат (несколько ключей в строке действуют как логическое И;
можно использовать символьные шаблоны (*, []), шаблоны IP адресов (192.168.0.0/24)
и интервалы чисел (PORT=1-1023); шаблоны можно чтать из файла - </имя-файла):
- DEFAULT ACCEPT
- DEFAULT REJECT
- ACCEPT {[not] ключ = значение {, значение} }
- REJECT {[not] ключ = значение {, значение} }
Ключи и значения:
- SERVICE
- X - соединение
- R - помещение в очередь
- P - печать из очереди
- M - удаление из очереди (LPRM)
- C - управление очередью (LPC)
- Q - запрос информации об очереди (LPQ)
- REMOTEHOST (aka REMOTEIP) - список имён и IP-адресов после DNS и rDNS запросов
- REMOTEPORT (aka PORT)
- UNIXSOCKET - соединение через сокет
- REMOTEUSER - берётся из управляющего файла задания
- HOST - берётся из управляющего файла задания и делаются DNS и rDNS запросы
- PRINTER - имя очереди
- AUTH
- AUTHJOB - при передаче задания использовалась аутентификация
- AUTHTYPE
- AUTHUSER
- AUTHFROM
- LPC - тип LPC запроса (см. описание lpc)
- SERVER - запрос исходит от хоста сервера печати
- SAMEHOST - REMOTEHOST и HOST имеют общий элемент
- FORWARD - NOT SAMEHOST
- SAMEUSER - REMOTEUSER и USER одинаковы
- CONTROLLINE - управляющий файл задания содержит соответствующую строку
Фильтры lpbanner, pclbanner, psbanner создают титульную страницу
в формате ASCII, HP PCL и PostScript соответственно.
Фильтр lpf предназначен для указания в printcap.
Утилита checkpc позволяет проверить и исправить /etc/printcap и
файлы в каталоге очереди печати.
JetDirect EX - это очень старое устройство,
которое не поддерживает протокол lpd.
Софт от HP делает SNMP (udp/161) запрос к JetDirect EX, на который он
рассказывает об открытых портах: tcp/9099 и tcp/9100.
Cтандартный lpr безуспешно пытается обратиться к lpd (tcp/515).
В процессе изучения LPRng (в сочетании с redhat-config-printer)
наткнулся на netcat,
решивший все мои текущие проблемы (мне всего-то надо раз в день
напечатать текстовый или PS-файл).
Устанавливаем netcat (например, из contrib). В /usr/local/bin уже лежит
фильтр для преобразования PS в PCL (ps2pcl.sh). Добавляем туда же:
tojd.sh
/usr/sbin/nc имя-принтера 9100
pstojd.sh
ps2pcl.sh | tojd.sh
Теперь вместо команды lp/lpr для печати PS-файлов надо
использовать pstojd.sh.
Сервер печати HP network printer: порты 22370/udp и 22370/tcp
(сервис hpnpd в /etc/services).
redhat-config-printer (aka printconf, пакет
redhat-config-printer-0.6.47-1 в RH9; system-config-printer в RHEL, Fedora Core, Fedora)
берёт исходную информацию из БД конфигурации
(используется alchemist, xml/gzip) и заново создаёт /etc/printcap или /etc/cups/.
Не стоит изменять их вручную, т.к. при запуске lpd или cups они будут обновлены из БД
(/etc/alchemist/namespace/printconf/),
либо необходимо убрать запуск /usr/sbin/printconf-backend в init.d (cups и lpd).
При обновлении БД /etc/printcap.local добавляется после генерации к /etc/printcap без
изменений, т.е. в него можно добавлять принтеры для LPRng.
Очереди, описанные в файлах CUPS без использования printconf, используются CUPS,
но не отображаются printconf.
В RH9 поддерживается как CUPS (по умолчанию), так и LPRng (какая система печати
используется определяется в rc.d). В RHEL 5 поддерживается только CUPS.
Имеет текстовый (-tui) и графический (-gui, требуется ssh -Y) вариант.
Вывод БД в формате XML:
redhat-config-printer-tui --Xexport
Восстановление БД (ключ --merge позволяет добавить вместо замещения;
после восстановления необходимо перезапустить cups или lpd):
redhat-config-printer-tui --Ximport
Работа из командной строки (полезно для %post в
kickstart;
имя изготовителя (MFOMATIC) и модели из БД foomatic (Generic-PCL_6_PCL_XL_Printer, pxlmono);
необходимо перезапустить cups или lpd):
redhat-config-printer-tui --X[add|remove]-local --device=/dev/lp --make=имя-изготовителя
--model=имя-модели --name=имя-очереди [--as-default]
redhat-config-printer-tui --Xdefault --queue=имя-очереди
При установке нового принтера запрашивается:
- имя очереди
- описание принтера
- тип очереди:
- локальный принтер (/dev/lp0, /dev/usb/lp0)
- IPP (Internet Printing Protocol) принтер на другом хосте (имя сервера,
путь: /printers/имя-очереди),
по умолчанию ищутся все IPP принтеры в локальном сегменте, на сервере д.б. открыт
порт 631/udp и установлены права доступа
- LPD принтер на другом хосте (имя сервера, имя очереди, на сервер), на сервере д.б. открыт
порт 515/tcp и установлены права доступа
- SMB принтер на другом хосте (имя рабочей группы, имя сервера, имя принтера (share),
имя пользователя (анонимные: guest, nobody), пароль (хранится незашифрованным);
список серверов и принтеров появляется автомагически)
- принтер, подключённый к сети прямым подключение JetDirect (имя сервера, порт 9100)
- опции очереди (заголовок перед печатью, заголовок после печати, границы, число строк)
- изготовитель
- модель принтера
- драйвер (для некоторых моделей предлагаются различные драйверы)
- опции драйвера (посылать FF после печати, предобработка PostScript (замена
нестандартных шрифтов, PS3 в PS1, PS3 в PS2, PS2 в PS1),
преобразовывать текст в PostScript, дуплексная печать,
размер листа бумаги, разрешение, источник бумаги)
Параметры могут быть изменены в дальнейшем. Имеется кнопка для
установления принтера по умолчанию. После внесения изменения в БД (кнопка Apply),
printconf перезапускает сервер печати. При использовании CUPS возможно разрешить
доступ к очереди печати для внешних пользователей (Action -> Sharing) и эмуляцию
lpd сервера.
Драйвер преобразует данные из формата прикладной программы в формат,
понимаемый принтером. Такое преобразование должно производиться только один раз,
т.е. если мы подключаемся к внешнему серверу печати, то на нём уже может
работать драйвер. В этом случае необходимо указывать тип драйвера
RAW (изготовитель Generic) или PostScript (изготовитель Generic), если все прикладные
программы выводят в PostScript.
Вспомогательные программы:
- gnome-default-printer (выбор принтера по умолчанию для Gnome для текущего пользователя)
- gnome-print-manager (пакет printman в RH9), eggcups в FC3 (я нечаянно удалил
иконку печати и пока не знаю как её вернуть)
- Print Notifier (аплет для Gnome)
- redhat-switch-printer (redhat-switch-printer-nox) - переключение между LPRng и CUPS
xfprint для Xfce.
Сервер печати CUPS (подарок от Easy Software Products).
cups.d(8)
cupsd.conf(5) - основные настройки, формат похож на формат
файла настройки Apache, в частности:
- AccessLog /var/log/cups/access_log
- ErrorLog /var/log/cups/error_log
- PageLog /var/log/cups/page_log
- LogLevel info (error, warn, info, debug, debug2)
- MaxLogSize 0
printers.conf (может формироваться службой
printconf.
lpoptions
client.conf - позволяет задать шифрование при обмене данными с клиентами
(SSL).
classes.conf(5).
/usr/share/doc/cups*.
В /var/spool/cups/ хранятся заголовки заданий, в т.ч. выполненных.
Обслуживание протокола lpd сделано через xinetd (/etc/xinetd.d/cups-lpd).
Пакет foomatic содержит настройки для различных принтеров.
При отсутствии пакета ghostscript задание зависает в очереди навсегда.
D-Link DP-300U (DP300UE...A1, H/W ver. A1, F/W ver. 1.20
)
представляет собой аппаратный сервер печати c двумя портами IEEE-1284 (LPT, bi-directional,
PJL, high speed) и одним портом USB 1.1, подключаемый к Fast Ethernet
(100Base-TX, autonegotiate).
Поддерживает протоколы TCP/IP (lpr/lpd), NetBEUI, AppleTalk.
Управление с помощью HTTP, telnet или SNMP.
Адрес по умолчанию - 192.168.0.10/24, сначала подключить сервер печати к LAN,
подключить принтер, включить его, затем включить питание сервера печати.
Можно переключить на получение адреса по DHCP.
Сервер печати JetDirect 170x (J3258C, хотя к нему прилагается документация для J3258B;
ROM: F.08.08; Firmware: F.08.52)
представляет собой аппаратный сервер печати с одним портом
IEEE-1284 (LPT, bi-directional, high speed), подключаемый к Ethernet (10Base-TX, обязательно heart-beat).
Имеются лампочки статуса и работы. Имеется кнопка, посылающая тестовую страницу на принтер
(в зависимости от времени удержания выбирается язык описания страницы: HP PCL, ASCII, Postscript,
HP-GL/2). Сброс настроек осуществляется при включении питания при нажатой кнопке Test
(удерживать 5 секунд). GDI-принтеры не поддерживаются.
Управление с помощью HTTP (HTTPS в старших моделях, требуется Java и доступ в интернет,
загруженный Java-аплет управляет устройством по протоколу SNMP, а не HTTP),
telnet (можно поставить пароль - печатается на экране и передаётся открытым текстом,
соединение разрывается по истечению интервала времени)
или SNMPv1 (стандартное имя сообщества для чтения - public).
Может получать IP-адрес и другие параметры по BOOTP/DHCP
(дополнительные параметры могут запрашиваться с TFTP сервера) или вручную,
при неудаче через 2 минуты захватывает адрес 192.0.0.192. В крайнем случае можно использовать
RARP или "arp -s IP MAC; ping IP" (в течении 2 минут после включения!).
DHCP с первого раза не подхватился. Пришлось заходить telnet на 192.0.0.192 и менять параметры вручную
(заодно отключил IPX, AppleTalk и DLC/LLC).
Поддерживает протоколы печати: LPD (515/tcp), IPP (631/tcp, в настройках необходимо
указать http://адрес/ipp/portномер), FTP (имя и пароль игнорируются,
не более 3 управляющих сессий и одной сессии передачи данных,
в заголовке сессии выдаётся инструкция по использованию), поток данных в порт
(RAW, номер порта или портов настраивается).
Есть ACL (по IP-адресам), выдача информации на SYSLOG (сервис lpr).
Тэги BOOTP/DHCP:
- nodename, host "имя"
- ht ether, hardware ethernet MAC-адрес
- ha MAC-адрес, hardware ethernet MAC-адрес
- vm, always-reply-rfc1048 on
- ip адрес, fixed-address адрес
- sm маска, option subnet-mask маска-подсети
- gw адрес, option routers адрес
- ds адрес, option domain-name-servers адрес
- lg адрес, option log-servers адрес
- hn, option host-name "имя"
- dn имя-домена, option domain-name имя-домена
- sa адрес, next-server адрес-TFTP-сервера
- специфические тэги (Tномер для BOOTP или option option-144 для dhcpd 2.0 или
дополнительное описание для dhcpd 3.0
(например, описание: option jetdirect144 code 144 = text, использование ):
- T144 относительное-имя-файла-на-TFTP-сервере
- T145 секунд (90; интервал неактивности)
- T146 0 (выводить пакеты на печать в обход буфера JetDirect)
- T147 0 (режим установки флажка TCP PSH - 0, 1, 2)
- T148 0 (отключить использование шлюза)
- T150 адрес-TFTP-сервера
Некоторые дополнительные параметры (читается с TFTP-сервера,
каждый параметр на отдельной строке в виде: имя, двоеточие, значение; комментарии начинаются
с символа '#'):
- passwd: пароль доступа по telnet, HTTP и SNMP
- sys-location (или location): объект SNMP sysLocation
- sys-contact (или contact): объект SNMP sysContact
- ssl-state: 1 (1 - только HTTPS, 2 - HTTP или HTTPS; только для старших моделей)
- tftp-parameter-attribute: tftp-ro (tftp-ro - запретить изменение параметров, заданных по TFTP;
tftp-rw - разрешить; manual-ro - запретить перерисывать параметры, заданные вручную)
- smtp-svr: адрес-smtp-сервера (для сканирующих устройств)
- 9100-printing: 1 (разрешить печать на порт 9100)
- ftp-printing: 1
- ipp-printing: 1
- lpd-printing: 1
- banner: 1 (печатать титульные листы)
- buffer-packing: 0 (1 - отключить буферизацию пакетов перед печатью)
- mult-tcp-cont: 0 (1 - запретить одновременные TCP-соединения)
- raw-port: дополнительный-порт-для-сырой-печати
- allow: адрес-сети маска (до 10 ACL; посмотреть можно только с помощью команды telnet "allow: list";
удалить с помощью команды "allow: 0")
- syslog-config: 1 (использовать сервер syslog)
- syslog-svr: адрес сервера syslog
- syslog-max: максимальное число сообщений в минуту
- syslog-priority: 8 (0 - отключить совсем; 8 - все сообщения)
- syslog-facility: lpr
- idle-timeout: 270 (в секундах)
- user-timeout: 900 (секунд простоя перед отключением сеанса telnet или FTP; нет в 170x)
- ews-config: 1 (включить HTTP-сервер сканирования)
- tcp-mss: 0 (0 - MSS всегда 1460; 2 - MSS равен 1460 для локальной сети и 536 для остальных)
- tcp-msl: 15
- telnet-config: 1 (разрешить использование telnet)
- web-refresh: ? (интервал обновления страницы диагностики; 0 - отключить обновление;
нет в 170x)
- snmp-config: 1 (разрешить работу SNMP; без SNMP не работает диагностика и конфигурация по HTTP)
- get-community-name: (отменить доступ на чтение по имени группы "public" невозможно!)
- set-community-name: (имя группы с правом на запись; перестаёт работать Java Applet?)
- auth-trap: on (посылать извещение о SNMP-запросах с неверным именем группы)
- trap-dest: адрес имя-группы номер-порта (кому посылать SNMP-извещения; имя группы - public;
номер порта - 162)
- link-type: AUTO (AUTO, 100FULL, 100HALF, 10FULL, 10HALF)
- webscan-config: 1 (ews-config?)
- scan-idle-timeout: 300
- scan-email-config: 1
- MFP-config: 0 (0 - только печать, 1 - печать и сканирование)
- usb-mode: Auto (MLC - нестандартный USB режим для HP; BIDIR; UNIDIR)
- status-page-lang: Auto (PCL, ASCII, HPGL2, PS)
- support-name, support-number, support-url, tech-support-url
Команды telnet (установка параметров в виде "имя-параметра: значение"):
- ? - список команд
- / - показать текущее значение параметров
- quit - выход с сохранением изменений
- exit - выход без сохранения изменений
- menu - переход в режим меню (на 170x не работает)
- advanced - доступ к "продвинутым" командам (на 170x не работает)
- general - возврат к обычным командам
- passwd - установка пароля (действует также для Web-интерфейса и SNMP; до 16 букв и цифр)
- sys-location, sys-contact, ssl-state, host-name, ip, subnet-mask, default-gw,
domain-name, dns-srv, smtp-srv, 9100-printing, ftp-printing, ipp-printing,
lpd-printing, banner, mult-tcp-cont, buffer-packing, raw-port, allow,
syslog-config, syslog-svr, syslog-max, syslog-priority, syslog-facility,
idle-timeout, user-timeout, ews-config, tcp-mss, tcp-msl, snmp-config, set-cmnty-name,
get-cmnty-name, default-get-cmnty, auth-trap, trap-dest, link-type,
webscan-config, scan-idle-timeout, scan-email-config, MFP-config, usb-mode,
status-page-lang, support-name, support-number, support-url,
tech-support-url - см. параметры DHCP/TFTP
- security-reset: 0 (1 - возврат к заводстким настройкам)
- cold-reset: 0 (1 - сброс только параметров TCP/IP)
- ip-config: (manual, bootp, dhcp; нет в 170x, вместо него dhcp-config:)
- addq: имя-очереди [префикс-строка] [суффикс-строка] [RAW | TEXT | AUTO | BINPS]
(добавить очередь LPD; до 6 штук)
- deleteq: имя-очереди
- defaultq: имя-очереди (AUTO)
- addstring: (позволяет добавить печать указанной строки перед заданием или после;
можно указывать шестнадцатеричные значения в виде '\1B')
- deletestring:
-
Некоторые параметры можно настроить только через web-интерфейс (это тот,
который запускает Java-аплет, роняющий через раз браузер и который общается с устройством
по SNMP). Например, реакция на ошибку принтера.
Как его перезагрузить из telnet? Приходится ждать пока не истечёт интервал
лизинга DHCP (при этом заново читаются все настройки DHCP и файл TFTP).
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru