Печать и серверы печати


Тема вывода информации на принтер в UNIX-подобных операционных системах заставит начинающих сисадминов зарыдать; в утешение им бывалые примутся рассуждать о старых добрых временах, когда все принтеры были устройствами TTY, и о молодом поколении, не понимающем своего счастья.* Обычно принтер подключается непосредственно к компьютеру, через параллельный порт или USB, но иногда принтеры могут подключаться к сетевому серверу печати (print server).

Если у вас принтер подключен непосредственно к компьютеру под управлением FreeBSD, я могу предложить установить универсальную систему печати UNIX (Common UNIX Printing System, CUPS) (/usr/ports/print/cups). Этот комплект программного обеспечения способен управлять многими популярными бытовыми и профессиональными принтерами, от небольших струйных и до огромных лазерных. Я не буду вдаваться в детали CUPS, поскольку во многом они зависят от выбранной модели принтера. Подробнее о CUPS можно узнать на сайте http://www.cups.org.

Кроме того, CUPS можно использовать для организации доступа к удаленным принтерам, но это довольно редкая ситуация. Я рекомендую использовать CUPS для доступа к удаленным принтерам, если их несколько, и вам может потребоваться переключаться между ними. С другой стороны, обычно мне хочется, чтобы все серверы использовали принтер, который находится рядом с моим столом. Это легко можно осуществить простой настройкой lpd(8).

Не сложнее организовать и доступ к удаленному принтеру, управляемому другим компьютером. Для этого нужно запустить локальный демон печати и указать ему, где находится принтер. Удаленный сервер печати должен уметь общаться по протоколу lpd через порт TCP с номером 515. Проверьте, так ли это, с помощью команды telnet; если вам удалось получить ответ, значит сервер понимает протокол lpd. Большинство UNIX-подобных серверов печати понимают этот протокол, но если вы работаете в окружении Microsoft, попросите администратора Windows установить пакет Print Services for Unix.

Чтобы активировать lpd(8), добавьте в /etc/rc.conf следующую строку:

lpd_enable="YES"

Теперь вы сможете вручную запускать и останавливать демон lpd(8) с помощью команд /etc/rc.d/lpd start и stop.

/etc/printcap

Файл /etc/printcap управляет настройками принтера с помощью lpd(8). У принтеров есть десятки параметров, от стоимости печати одной страницы до настройки ручной подачи бумаги.

Каждому принтеру, известному системе, должна соответствовать отдельная запись в файле /etc/printcap, то есть в базе данных возможностей принтеров. Этот файл имеет неудобоваримый, по современным меркам, формат и выглядит малопонятным для всех, кому ранее не приходилось работать с файлом termcap(5). К счастью, для организации доступа к серверу печати вам не требуется понимать формат файла printcap(5), достаточно следовать следующим инструкциям.

Чтобы подключиться к принтеру, соединенному с сервером печати, вам следует узнать имя хоста сервера печати или его IP-адрес и имя принтера. Создайте запись в файле /etc/printcap, следуя приведенному ниже шаблону. Особое внимание уделите двоеточиям и символам обратного слэша (\), поскольку они имеют жизненно важное значение.

В первой строке определяется имя принтера (1). Для каждого принтера можно указать любое количество имен, разделив их символом вертикальной черты (|). Принтер по умолчанию в UNIX-подобных системах получает имя lр, поэтому обязательно укажите это имя в списке имен предпочтительного принтера. Другое имя должно совпадать с именем, которое используется сервером печати для обозначения этого принтера (например, «3rdFloorPrinter»). Будьте внимательны: нередко серверы печати от Microsoft присваивают несколько имен одному и тому же принтеру, чтобы реализовать различные процедуры печати. Если в вашей сети наблюдается подобная ситуация, выбирайте имя PostScript.

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

Параметр rm (remote machine — удаленная машина) (3) определяет имя хоста сервера печати. Вы должны иметь доступ к серверу по имени, указанному здесь.

Для каждого принтера следует определить отдельный временный каталог (4), где локальный демон печати сможет хранить документы перед отправкой серверу печати. Этот каталог должен принадлежать пользователю root и группе daemon.

В отличие от временных каталогов, которые должны быть отдельными для каждого принтера, файл протокола может быть общим (5).

Наконец, нужно указать имя удаленного принтера (6). Файл /etc/printcap обязательно должен заканчиваться пустой строкой. Следует также отметить, что последнюю строку записи не нужно заканчивать символом обратного слэша (\).

После подготовки файла /etc/printcap следует перезапустить lpd(8), и только после этого вы сможете увидеть очередь печати с помощью lpd(1) и следить за появлением ошибок в файле /var/log/lpd-errs.

Комментарии запрещены.