CUPS — сервер печати

ServerAdmin: To configure the email address of the designated administrator of the CUPS server, simply edit the /etc/cups/cupsd.conf configuration file with your preferred text editor, and add or modify the ServerAdmin line accordingly. For example, if you are the Administrator for the CUPS server, and your e-mail address is ‘bjoy@somebigco.com’, then you would modify the ServerAdmin line to appear as such:

ServerAdmin bjoy@somebigco.com

Listen: By default on Ubuntu, the CUPS server installation listens only on the loopback interface at IP address 127.0.0.1.

Блог о системном администрировании. Статьи о Linux, Windows, СХД NetApp и виртуализации.

In order to instruct the CUPS server to listen on an actual network adapter’s IP address, you must specify either a hostname, the IP address, or optionally, an IP address/port pairing via the addition of a Listen directive. For example, if your CUPS server resides on a local network at the IP address 192.168.10.250 and you’d like to make it accessible to the other systems on this subnetwork, you would edit the /etc/cups/cupsd.conf and add a Listen directive, as such:

Listen 127.0.0.1:631 # existing loopback Listen Listen /var/run/cups/cups.sock # existing socket Listen Listen 192.168.10.250:631 # Listen on the LAN interface, Port 631 (IPP)

In the example above, you may comment out or remove the reference to the Loopback address (127.0.0.1) if you do not wish cupsd to listen on that interface, but would rather have it only listen on the Ethernet interfaces of the Local Area Network (LAN). To enable listening for all network interfaces for which a certain hostname is bound, including the Loopback, you could create a Listen entry for the hostname socrates as such:

Listen socrates:631 # Listen on all interfaces for the hostname ‘socrates’

or by omitting the Listen directive and using Port instead, as in:

Port 631 # Listen on port 631 on all interfaces

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

Запустите свой любимый браузер и зайдите по адресу http://localhost:631 (например, lynx localhost:631) — вы увидите интерфейс настройки CUPS. Выберите раздел «Manage Printers», далее раздел «Add Printer». Затем у вас спросят имя и пароль администратора CUPS; по умолчанию это администратор системы ().

Появится первый диалог — достаточно указать имя (Name) принтера, описание (Description) носит вспомогательный характер, а местоположение (Location) нужно только, если у вас настроена сложная система раграничения доступа в CUPS.

В следующем диалоге производится выбор устройства, к которому подключен принтер.

Два последующих — выбор модели и производителя принтера. Описания моделей (PPD) находятся в каталоге . Если вы видите подозрительно мало моделей, доустановите пакет cups-drivers. Обратите внимание на то, что этот пакет конфликтует с пакетом foomatic — другой системой настройки, поэтому определитесь, какой метод будете использовать.

Напоследок вы можете заказать печать пробной страницы.

Настройка CUPS через web-браузер

Сложно дать краткое описание того, что же такое foomatiс. Это и база описаний моделей принтеров, и интерфейс настройки одновременно. Более того, foomatic умеет настраивать практически все известные на сегодняшний день спулеры, в частности CUPS.

Процедуру настройки лучше всего рассмотреть на конкретном примере. Пусть мы хотим настроить printer HP LaserJet 1100, расположенный на ™-машине в рабочей группе под именем .

  1. Шаг1. Сформируем URI, описывающее расположение принтера. Общий формат <протокол>://<местоположение>. Местоположение зависит от протокола:

    Если принтер подключен локально, то URI — file://путь_к_файлу, в частности может быть указан файл-устройство (например, .

    Если удаленный сервер работает под управлением ™ (наш случай), то URI — smb://user:password@SOMEGROUP/SOMEHOST/SOMEPRINTER. Некоторые поля в описании могут отсутствовать.

    Наконец, в случае Netware-сервера URI — ncp://user:password@SERVER/PRINTER

  2. Шаг2.

    Общий принтер в локальной сети на Linux

    Посмотрим доступные описания моделей принтеров. Для этого запустим команду foomatic-configure -O | less. Описание будет выведено на экран в формате XML. Выделим подходящее описание:

    <printer> <id>62816</id> <make>HP</make> <model>LaserJet 1100</model> <functionality>A</functionality> <autodetect> <parallel> <commandset>MLC,PCL,PJL</commandset> <description>HP LaserJet 1100 Printer</description> <manufacturer>Hewlett-Packard</manufacturer> <model>HP LaserJet 1100</model> </parallel> </autodetect> <drivers> <driver>ljet4</driver> <driver>stp</driver> </drivers> </printer>

    Нас прежде всего интересует идентификатор-описание, заключенный в теги <id> — в нашем случае это 62816. Выберем также драйвер GhostScript™ — выбор того или иного драйвера дело опыта и вкуса. Мы остановимся на ljet4 — основной рабочей лошадке всего этого семейства принтеров.

  3. Шаг3. Мы собрали теперь достаточно информации для того чтобы произвести конфигурацию принтера. Это делается одной командой foomatic-configure. Мы укажем желаемый спулер (параметр ), имя принтера (параметр ) идентификатор описания, драйвер и URI.

    foomatic-configure -s cups -n Laser_Jet -p 62816 -d ljet4 -c \ smb://user:password@SOMEGROUP/SOMEHOST/SOMEPRINTER

Вот и все готово. Настройки можете посмотреть непосредственно в конфигурационных файлах спулера или при помощи команды foomatic-configure -Q. Данная программа на моей машине сообщила следующее:

<defaultqueue>printer</defaultqueue> <queue foomatic=»1″ spooler=»cups»> <name>Laser_Jet</name> <printer>62816</printer> <driver>ljet4</driver> <connect>smb://user:password@SOMEGROUP/SOMEHOST/SOMEPRINTER</connect> <description>HP LaserJet 1100</description> </queue> <queue foomatic=»0″ spooler=»cups»> <name>lexmark</name> <connect>file:/dev/lp0</connect> </queue> <queue foomatic=»1″ spooler=»cups»> <name>printer</name> <printer>62368</printer> <driver>ljet4</driver> <connect>file:/dev/lp0</connect> </queue> </queues>

Все понятно без лишних комментариев.

Настройка CUPS через foomatic

В составе пакета drakxtools имеется утилита настройки принтера printerdrake; фактически это интерфейс над описанным выше foomatic. Полезно помнить следующие дополнительные аргументы printerdrake:

  •  — конфигуратор запускается в режиме «Эксперт» — . Вам будут задавать больше вопросов, но зато вы сможете произвести более тонкие настройки;

  •  — в качестве спулера будет использоваться lpd (для Compact недействительно);

  •  — в качестве спулера будет использоваться CUPS.

При задании принтера вы пройдете через несколько диалогов: выбор действия, выбор местоположения принтера, уточнение местоположения (например, пароля и имени для доступа к удаленному серверу), задание имени принтера, выбор модели принтера и драйвера, печать тестовых страниц.

Еще один момент. Перед запуском printerdrake проверяет установленное программное обеспечение и доустанавливает, если это необходимо, необоходимые пакеты. В частности, если вы установили GIMP, то printerdrake дополнительно поставит дополнительные драйверы gimp-print.

Настройка CUPS помощью printerdrake

Если вы слишком увлеклись настройками и теперь путаетесь между десятком заведенных принтеров, то самое время удалить лишние.

Удаление можно производить вручную удалением описания из конфигурационых файлов спулера (). Для CUPS можно вновь воспользоваться Web-интерфейсом. Если вы использовали foomatic (или printerdrake), то полезно знать команду

$ foomatic-configure -s тип_спулера -n имя_принтера -R

где тип_спулера — CUPS.

Как удалить лишние принтеры?

Под конец года наша организация получила новое оборудование — компы на замену особо почётных раритетов и дополнительные рабочие места. В некоторых отделах количество компьютеров на один принтер перевалило за 12. Новый Windows 7 домашний базвый позволяет подключать к принтеру 8 человек, точнее 8 компьютеров. Старый добрый Win XP professional поддерживает 10 подключений. Мало — у нас отделы до 14 рабочих мест. Аппаратные принт-серверы сами стоят как маленький принтер, а к тому же требуют хитрой настройки для каждого клиента. Вот у линуксоидов такой проблемы нет, хоть и есть другие.

После модернизации у нас остались старые компьютеры — Celeron 1700, 256 MB DDR, 20 GB IDE HDD — как раз как в объявлениях «отдам даром». Они и стал принт-сервером под управлением ubuntu 10.04 desktop.

Диска с ubuntu server не было под рукой, да и задачи сделать всё только из командной строки не стояло.
О том, как печатать через CUPS есть хорошая статья. Вот только рабочие места постоянно заняты, принтеры регулярно ездят в гарантийный ремонт и каждый раз копировать URI принтера, ползать по панели управления Windows и вручную подсовывать драйвер нет ни желания, ни возможности. Эх, было бы как в Windows — ввёл в адресную строку , выбрал принтер, а остальное делается само. Можно и так, но придётся повозиться с сервером.
Добавляем пакеты

Winbind теснее интегрирует имена хостов в linux и windows сетях. Libcupsys2-dev, но же cups-devel — изсходные тексты CUPS для сборки автоустановщика драйверов. Openssh-server обеспечит доступ по SSH на случай, если нужно будет выполнить пару команд с другого этажа.
Собираем cups windows drivers
Скачиваем cups-windows-6.0-source. Распаковываем, заходим в полученный каталог и запускаем

Изменения (для ubuntu 10.04 desktop) коснутся только двух секций.

[printers] comment = All Printers browseable = yes path = /var/spool/samba printable = yes guest ok = yes read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /usr/share/cups/drivers browseable = yes read only = no writable = yes guest ok = yes

В первой разрешаем гостя, во второй меняем пусть к каталогу с драйверами и разрешаем запись. По-умолчанию писать в неё сможет только root (другое имя не прокатило). И его ещё надо создать.

Применим сделанные настройки:

sudo service smbd restart sudo service cups restart

Часто вместо советуют но в нашей убунте (10 04 десктоп) его зовут именно smbd
Для штатной работы нужно скопировать из windows несколько файлов:

ps5ui.dll pscript.hlp pscript.ntf pscript5.dll

Нужно продублировать их из каталога %WINDIR%\SYSTEM32\SPOOL\DRIVERS\W32X86\3 в /usr/share/cups/drivers и получаем такой список:

cups6.inf cups6.ini cupsps6.dll cupsui6.dll ps5ui.dll pscript.hlp pscript.ntf pscript5.dll

Обратите внимание, все имена должны быть в нижнем регистре!

Теперь, собственно экспортируем все принтеры из CUPS в Samba (на нащем принт-сервере ровно один принтер, так что можно экспортировать все)

Если всё прошло хорошо, то вы увидите примерно полтора экрана текста, который будет заканчиваться на Successfully set %принтер% to driver %драйвер%
Если же выводится много-много (более пяти экранов) повторяющегося текста — смело жмём Ctrl+C и читаем сообщение об ошибке Самбы. Устраняем и повторяем.

После всех манипуляций вин-компьютеры увидели в сети своего собрата с одним общим принтером.

Common UNIX Printing System

Его можно установить привычным для пользователей windows способом — двойной щелчок — да — ждём — ждём — «принтер ? использовать по-умолчанию». Однако подключенный таким образом принтер не имеет фирменных настроек — только стандартный драйвер windows. Зато там есть печать нескольких страниц на одном листе.

После очередной перезагрузки выяснилось, что samba стартует раньше cups и из-за этого пропадает доступ к принтеру. Лечится это довольно просто — добавлением перед в файле /etc/rc.local

Вот теперь все довольны, а я пишу шпаргалку, вместо того, чтобы бегать и завершать сессии общего доступа.

Проблемы c CUPS часто возникают из-за неверных прав доступа. Сначала дважды проверьте права доступа в devfs(8) (сверьтесь с уже описанными выше). Затем, проверьте реальные права устройств, созданных в файловой системе. Также бывает полезным удостовериться, что ваш пользователь входит в группу . Если у вас складывается впечатление, что флажки прав доступа на странице администрирования веб-интерфейса CUPS не работают, то иным решением может быть резервное копирование конфигурационного файла и редактирование разных опций конфигурации с подбором их комбинаций. Ниже приведено содержимое тестового файла конфигурации .

CUPS — Print Server

Пожалуйста, обратите внимание на то, что безопасность в этом примере была пожертвована в угоду простоте настройки; как только администратор успешно подсоединится к серверу CUPS и сконфигурирует клиентов, рекомендуется пересмотреть данную конфигурацию и добавить разграничение доступа.

# Log general information in error_log — change «info» to «debug» for # troubleshooting… LogLevel info # Administrator user group… SystemGroup wheel # Listen for connections on Port 631. Port 631 #Listen localhost:631 Listen /var/run/cups.sock # Show shared printers on the local network. Browsing On BrowseOrder allow,deny #BrowseAllow @LOCAL BrowseAllow 192.168.1.* # change to local LAN settings BrowseAddress 192.168.1.* # change to local LAN settings # Default authentication type, when authentication is required… DefaultAuthType Basic DefaultEncryption Never # comment this line to allow encryption # Allow access to the server from any machine on the LAN <Location /> Order allow,deny #Allow localhost Allow 192.168.1.* # change to local LAN settings </Location> # Allow access to the admin pages from any machine on the LAN <Location /admin> #Encryption Required Order allow,deny #Allow localhost Allow 192.168.1.* # change to local LAN settings </Location> # Allow access to configuration files from any machine on the LAN <Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny #Allow localhost Allow 192.168.1.* # change to local LAN settings </Location> # Set the default printer/job policies… <Policy default> # Job-related operations must be done by the owner or an adminstrator… <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs \ Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription \ Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job \ CUPS-Move-Job> Require user @OWNER @SYSTEM Order deny,allow </Limit> # All administration operations require an adminstrator to authenticate… <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer \ Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs \ Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer \ Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class \ CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default> AuthType Basic Require user @SYSTEM Order deny,allow </Limit> # Only the owner or an administrator can cancel or authenticate a job… <Limit Cancel-Job CUPS-Authenticate-Job> Require user @OWNER @SYSTEM Order deny,allow </Limit> <Limit All> Order deny,allow </Limit> </Policy>

6. Устранение неполадок с CUPS

Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.

Добавить комментарий

Закрыть меню