Системное администрирование ОС Solaris 10

Печать в Solaris

Разбить на страницы
Показывать лекцию целиком

С настройками печати в UNIX приходилось сталкиваться куда меньшему количеству людей, чем с многими другими задачами. Поэтому многие системные администраторы ограничивают себя знанием лишь самых основ – того, что существует демон печати lpd, и того, что для настройки печати может потребоваться файл /etc/printcap или /etc/printers.conf.

В Solaris все может оказаться несколько сложнее, хотя и намного интереснее.

Cистема печати в Solaris

Системы Solaris могут использоваться и в качестве мощных серверов, и в качестве рабочих станций на рабочих местах пользователей. В последнем случае пользователям необходимо иметь возможность печатать тексты и изображения со своих компьютеров. Поэтому в Solaris обеспечивается работа с любыми принтерами: установленными локально, предоставляемыми сервером печати или отдельно подключенными к сети. Компьютер под управлением Solaris может как выполнять функции сервера печати, так и быть клиентом печати.

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

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

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

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

Для настройки системы печати следует выполнить следующие работы:

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

    Сервер печати не предоставляет доступ к принтеру всем подряд, доступ разрешается на основании строгих правил. Чтобы принять решение о предоставлении доступа к принтеру тому или иному компьютеру, сервер печати использует какую-либо службу имен (DNS, NIS, LDAP) для определения имени обращающегося компьютера. Если на сервере печати не используется ни одна из служб имен, следует в файл /etc/inet/ hosts внести записи о каждом из компьютеров-клиентов печати.

    Для работы сервера печати необходимо, чтобы на нем было свободное дисковое пространство для хранения очереди заданий на печать, – его объем зависит от характера и количества заданий, одновременно отправляемых на печать, и обычно колеблется от 25 до 500 Мбайт. Такая область диска, предназначенная для хранения очереди печати, называется областью буферизации или спулом (spool – system peripheral operation offline). Помните, что размер файла в формате PS или PCL, подготовленный драйвером принтера для загрузки в последний, может сильно отличаться от размера исходного файла, например, документа OpenOffice. Это связано с необходимостью загрузки шрифтов, растеризации изображений и т.п.

    Рекомендуется, чтобы объем памяти системы под управлением Solaris, которая выполняет роль сервера печати, был не менее 96 Мбайт.

    Для того, чтобы сервер печати мог обеспечивать доступ к принтеру, следует указать, какие принтеры вообще доступны в системе и какой принтер надлежит использовать по умолчанию. Стало быть, надо иметь список доступных принтеров с указанием их имен и типов. Такой список содержится в файле /etc/printers.conf. Это отличает Solaris от других систем UNIX, поскольку в большинстве из них настройки принтеров хранятся в /etc/printcap. Такого файла в Solaris нет.

    Кроме этого, для каждого из типов принтеров требуется описание свойств принтера, такое, как указание оптического разрешения печати, кодов загрузки графики и т.п.. Эта информация хранится в той же структуре каталогов, где хранится информация об управляющих кодах терминалов – /usr/share/lib/terminfo. В подкаталогах этого каталога в алфавитном порядке собраны файлы, описывающие терминалы и принтеры. Так, описание принтеров Hewlett Packard Laser Jet содержится в файле /usr/share/lib/terminfo/h/hplaser. Эти файлы – двоичные, а не текстовые, поэтому их не следует редактировать напрямую. Вместо этого при необходимости модифицировать или добавить новое описание принтера или терминала следует создать исходный (текстовый) файл описания устройства и затем воспользоваться командой tic, которая превращает (компилирует) текстовый файл описания в стандартный двоичный файл, размещая последний в структуре каталогов /usr/share/lib/terminfo.

    Формат файла описания принтера описан в terminfo (4), следовательно, для изучения этой информации следует воспользоваться командой

    man terminfo

    или

    man 4 terminfo

    Для обратного превращения двоичного файла описания устройства – терминала или принтера – в исходный текстовый файл описания устройства нужно выполнить команду infocmp. Этой команде следует указывать в качестве аргумента имя устройства, а не путь к файлу описания, т.е. правильной командой будет

    infocmp hplaser

    а НЕ

    infocmp /usr/share/lib/terminfo/h/hplaser

    Последний вариант останется непонятым: программа infocmp ищет указанный ей файл в стандартной структуре каталогов или там, где указано переменной среды окружения TERMINFO.

    Для редактирования настроек системы печати как на сервере печати, так и на клиентах печати следует использовать программы printmgr ( /usr/sadm/admin/bin/printmgr ) и lpset.

    Вместо этого можно также редактировать вручную файл /etc/printers.conf: все равно вышеупомянутые программы вносят изменения именно в этот файл.

    Другие настройки локальных принтеров, в частности, физический порт, к которому подключен принтер (например, /dev/lp0 ), указываются в стурктуре каталогов /etc/lp/printers, в которой для каждого принтера есть свой подкаталог с настройками. Эти настройки можно редактировать вручную, но удобнее воспользовться командой lpadmin или программой Solaris Print Manager (printmgr).

    Например, для того, чтобы добавить новый принтер hplj на сервере печати, достаточно выполнить команду lpadmin. Команда lpadmin может выглядеть, например, так:

    lpadmin –p hplj –v /dev/lp0

    По этой команде в систему добавится локальный принтер с именем hplj, все обращения к этому принтеру будут выполняться через устрйоство /dev/lp0 (первый параллельный порт).

    Настройка клиента печати

    Клиент печати настраивается сходным образом: в файле /etc/printers.conf на клиенте печати будет указано, что принтер по умолчанию находится на компьютере, который выполняет роль сервера печати. В настройках клиента печати не обязательно определять права доступа к удаленному принтеру: это уже сделано в настройках сервера печати. Таким образом, минимальный файл /etc/printers.conf на клиенте печати, чьи задания на печать должны отправляться принтеру hplj на компьютере с именем printserver, будет выглядеть так:

    _default | lp:
    :use=printserver:
    :bsdaddr=printserver,hplj

    В этом файле, как видно, указано, что принтером по умолчанию для данного компьютера будет принтер hplj на компьютере printserver. В файле /etc/printers.conf на компьютере printserver должен быть определен принтер hplj, т.е. должно присутствовать описание вида:

    hplj:\
    :use=/dev/lp0:\
    bsdaddr=printserver,hplj,Solaris:

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

    Служба печати на сервере печати

    Для успешной обработки заданий на печать недостаточно просто указать свойства и имена принтеров. Потребуется еще и обеспечить работу программ, которые формируют задание на печать, отправляют его по месту назначения (к выбранному принтеру) и обеспечивают успешное выполнение задания.

    По пути от приложения, инициирующего печать, до принтера задание на печать должно быть обработано несколькими программами: программой lp (или lpr ) – для постановки в очередь на печать, lpsched – для обработки очереди, возможно, программами inetd и in.lpd – в случае, если задание отправлено на удаленную машину.

    Рассмотрим наиболее обычный вариант печати – с клиентской машины командой lp на удаленный принтер, который доступен через компьютер printbox.

    Мы распечатываем текстовый файл data.txt с помощью команды

    lp –d printbox:hplj data.txt
    (рис 10.1) Взаимодействие подсистем печати на компьютере – клиенте Solaris 2.6 и сервере печати Solaris 8

    Команда lpr в Solaris – это символическая ссылка на команду lp, поэтому что вызывать – lpr или lp – безразлично, будет вызвана одна и та же программа. Название lpr сохранено ради совместимости с другими системами UNIX.

    Задание на печать формируется командой lp и отправляется на компьютер printbox. Там его должен ждать демон inetd. Как только задание добирается до порта 515 на компьютере printbox, демон inetd на нем запускает программу in.lpd (согласно записи о службе printer в /etc/inetd.conf ) и передает ей пришедшее задание. Программа in.lpd помещает задание в область буферизации ( /var/spool/lp/* ) и сообщает программе lpsched, что ей пришло задание. Дальнейшая обработка задания ложится на службу печати, т.е. на lpsched. Именно эта программа запускает интерфейсную программу принтера, которая уже непосредственно взаимодействует с принтером.

    (рис 10.2) Взаимодействие подсистем печати на компьютере – клиенте Solaris 2.0 и сервере печати Solaris 2.5.1

    Такая схема, показанная на рис. 10.1, иллюстрирует взаимодействие клиента и сервера печати при условии, что версия системы клиента печати не ниже Solaris 2.0, а версия системы сервера печати – не ниже Solaris 2.6.

    В случае использования более старых систем Solaris схема взаимодействия будет более сложной; при отправке задания на печать на удаленный принтер будут выполнены следующие действия:

  • программа lp положит задание в локальную область буферизации ( spool ) на клиенте печати и передаст запрос локальному lpsched ;
  • локальный демон lpsched обратится к локальному демону lpNet, который запустит дочерний процесс lpNet и этот дочерний процесс передаст задание на сервер печати;
  • на сервере печати демон listen передаст запрос местному демону lpNet, который, в свою очередь, запустит дочерний процесс;
  • этот дочерний процесс lpNet на сервере печати положит задание в область буферизации на сервере печати и передаст задание lpsched ;
  • lpsched на сервер печати отправит задание на принтер.
  • Это иллюстрирует рис. 10.2:

    Рисунки взяты из Методического пособия компании Sun Microsystems "Системное администрирование ОС Solaris 8, часть 1".

    Добавление и настройка нового принтера

    В моей сети есть принтер HP LJ 5L, который подключен к сети с помощью принт-сервера (маленькой коробочки с интерфейсом Ethernet, обученной работать с протоколом печати BSD). Адрес принт-сервера в сети – 192.168.5.22. Как добавить этот принтер в конфигурацию Solaris, чтобы на нем можно было напрямую печатать файлы?

    Во-первых, надо создать запись об этом принтере в файле /etc/inet/ hosts или на сервере имен, чтобы система могла обратиться к принтеру по имени:

    cat /etc/inet/hosts
    #
    # Internet host table
    #
    127.0.0.1 localhost
    192.168.5.33 sunny loghost
    192.168.5.22 hp5l

    Затем следует модифицировать файл /etc/printers.conf:

    cat /etc/printers.conf
    #
    # If you hand edit this file, comments and structure may change.
    # The preferred method of modifying this file is through the use of
    # lpset(1M)
    #
    hplj:\
    :bsdaddr=hp5l,PS-1426:\
    :description=hplj:
    _default:\
    :use=hplj:

    Самая важная строка в нем – это bsdaddr. Помните, что в этой строке должно быть указано имя сервера, к которому подключен принтер (в нашем случае – это имя той самой коробочки-принт-сервера – hp5l ) и логическое имя принтера на этом сервере, т.е. то имя, под которым принтер известен серверу (в нашем случае это – PS-1426 ). Узнать это имя можно либо из документации к сетевому принтеру или принт-серверу, либо выяснить у администратора того компьютера, к которому подключен принтер, либо попробовать выяснить, подсоединившись с помощью telnet к принт-серверу:

    telnet hp5l
    Trying 192.168.5.22...
    Connected to hp5l.
    Escape character is '^]'.
    ************************************
    * Welcome to D-Link Print Server *
    * Telnet Console *
    ************************************
    Server Name : ps-1426
    Server Model : DP-101
    F/W Version : 1.34
    MAC Address : 00 50 BA 03 B6 47
    Uptime : 64 days, 04:32:19

    Программа Solaris Print Manager

    Для настройки подсистемы печати в Solaris можно использовать утилиту Solaris Print Manager. Она предоставляет простой графический интерфейс для добавления, удаления или изменения настроек принтера в системе.

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

    Вызов программы Solaris Print Manager выполняется командой

    /usr/sadm/admin/bin/printmgr 

    При запуске Solaris Print Manager вас спросят, какую службу имен следует использовать (рис. 10.3).

    (рис 10.3) Первый вопрос программы Solaris Print Manager

    Это связано с тем, что при подключении сетевых принтеров требуется определить их имена или имена хостов, к которым они подключены. Для подключения к таким принтерам с помощью Solaris Print Manager следует указать их IP-адреса в файле /etc/inet/hosts, в NIS или DNS.

    На рис. 10.4 представлено главное меню Solaris Print Manager.

    (рис 10.4) Главное меню Solaris Print Manager

    Программа предоставляет весьма скромный сервис, как видно из рис. 10.5 и рис. 10.6.

    (рис 10.6) Окно "добавить принтер" в Solaris Print Manager(рис 10.5) Окно "изменить свойства принтера" в Solaris Print Manager

    Управление принтерами с помощью admintool

    В системах Solaris, младших, чем Solaris 8, управление принтерами осуществлялось с помощью admintool. В настоящее время можно просмотреть свойства принтеров в системе с помощью admintool, но использовать эту программу для модификации этих свойств или добавления новых принтеров не следует. Для этого существует программа Solaris Print Manager, которая позволяет управлять всеми свойствами принтеров, добавлять новые и удалять ненужные принтеры из системы.

    Файлы и каталоги конфигурации подсистемы печати Solaris

    Принтер, выбираемый по умолчанию, должен быть поименован в переменных среды окружения LPDEST или PRINTER (проверяются именно в таком порядке), либо в переменной _default в файлах $HOME/.printers, /etc/printers.conf, либо в карте NIS printers.conf.byname. Если ни в одном из этих источников параметр с именем _default не обнаружится, стало быть, запрос на печать без указания имени принтера не может быть выполнен.

    Исполняемые файлы подсистемы печати находятся в /usr/bin ( lp, lpstat, cancel ), /usr/sbin ( lpadmin, lpusers, lpshut ). В /usr/share/lib/terminfo содержится база данных принтеров и терминалов, в /usr/lib/lp находятся lpshed, фильтры для обработки файла перед отправкой на печать, некоторые другие полезные программы.

    Каталог /etc/lp содержит файлы настроек подсистемы печати, а /var/spool/lp хранит текущие задания на печать и информацию о них.

    Файл протокола подсистемы печати – это /var/lp/logs/requests:

    ...
    = hplj-1, uid 0, gid 1, size 5, Срд 05 Май 2004 19:48:34
    z hplj
    C 1
    D hplj
    F /export/home/filip/q
    P 20
    T /export/home/filip/q
    t simple
    U root
    s 0x0040
    v 2
    = hplj-2, uid 0, gid 1, size 5, Срд 05 Май 2004 19:49:11
    z hplj
    C 1
    D hplj
    F /export/home/filip/q
    P 20
    T /export/home/filip/q
    t simple
    U root
    s 0x0040
    v 2
    ...

    Взаимодействие со службами имен

    Для того, чтобы корректно направить задание на печать к требуемому принтеру, программе lp необходимо знать содержимое файлов /etc/printers.conf и /etc/nsswitch.conf:

    cat /etc/printers.conf
    ...
    lp:\
    :bsdaddr=printbox,hplj, Solaris:
    ...
    cat /etc/nsswitch.conf
    ...
    printers: dns, nisplus, files
    ...

    Из первого файла lp выясняет, что для печати на принтер с локальным именем lp следует отправить задание принтеру hplj на компьютере printbox. Из второго файла становится ясно, что для того, чтобы найти ip-адрес компьютера printbox следует воспользоваться службами имен в следующем порядке: обратиться к серверу имен службы DNS (согласно содержимому /etc/resolv.conf ); если с помощью DNS найти адрес не удалось, надо обратиться к серверу NIS+, а если и эта попытка оказалась неудачной, посмотреть, нет ли записи о printbox в файле /etc/inet/hosts.

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

    Печать документов, просмотр и отмена заданий на печать

    Для печати документа можно выбрать в меню Print, если таковое меню имеется в задействованном приложении. При работе в командной строке для печати файла дайте команду

    lp имя_файла

    или

    lpr имя_файла

    Для просмотра очереди печати используют команду lpq:

    bash-2.05# cat >> lptest
    lptest
    bash-2.05# lp lptest
    request id is hplj-2 (1 file)
    bash-2.05# lpq
    Port Name PS-1426
    ==============================
    [Total Status]
    Job 41
    Sizes (KBytes) 10546
    Timeouts 0
    ------------------------------
    [Current Job]
    Printer Status On line
    Index 0
    Protocol
    Name
    Spooling Bytes 0
    Printing Bytes 0
    ==============================

    Отмена задания выполняется командой lprm:

    lp name_to_sysnum
    request id is hplj-4 (1 file)
    lprm hplj-4

    Команда lprm без параметров удаляет текущее (выполняемое) задание на печать.

    Все эти команды принимают имя принтера (то, которым принтер назван в /etc/printers.conf или в базе данных NIS) с ключом :

    lprm -P hplj

    Уникальной особенностью Solaris является возможность активировать или деактивировать принтер, описанный в /etc/printers.conf. Это делается командами enable и disable соответственно. Более того, можно временно приостановить прием запросов на печать для определенного принтера командой

    reject имя_принтера

    и затем восстановить прием заданий командой

    accept имя_принтера

    В некоторых командных процессорах команды accept, reject, enable и disable могут быть встроенными командами командного процессора, и тогда следует найти команды подсистемы печати, используя find или whereis, а затем запускать их, указывая полное имя команд.

    Настройка печати из Mozilla Firefox, StarOffice и OpenOffice

    Для печати из упомянутых программ может потребоваться дополнительная настройка – в случае, если хочется иногда печатать не только на принтере, принятом в системе по умолчанию (кстати, следите, чтобы в /etc/printers.conf был корректно описан принтер с именем default – его часто ищут различные приложения; то же относится и к принтеру _default ).

    Для печати из Firefox требуется отыскать каталог локальных настроек пользователя. Делаем так:

    cd ~/.mozilla/firefox
    grep default profiles.ini
    Name=default
    Path=ag2k9zrb.default
    (рис 10.7) Окно программы настройки принтеров spadmin для StarOffice/OpenOffice

    Имя подкаталога, который нам нужен – то, что указано в строке Path. Идем туда и создаем файл user.js:

    cd ag2k9zrb.default; cat user.js
    user_pref("print.printer_list", "default prn04p16 prn04p17 lduplex");
    user_pref("print.postscript.print_command", "/usr/bin/lpr
    ${MOZ_PRINTER_NAME:+'-P'}${MOZ_PRINTER_NAME}");
    user_pref("print.print_command", "/usr/bin/lpr
    ${MOZ_PRINTER_NAME:+'-P'}${MOZ_PRINTER_NAME}");

    Обратите внимание на список принтеров в первой строке – имена должны быть такие же, как в /etc/printer.conf.

    Для настройки печати из StarOffice или OpenOffice следует запустить программу spadmin (рис. 10.7). В моем Solaris Express она находится в /opt/staroffice8/program/. Программа настройки принтеров для StarOffice и OpenOffice имеет графический интерфейс и достаточно проста в работе, так что здесь мы не будем останавливаться на ней подробно.

    Многие приложения в Solaris могут отслеживать значение переменной среды окружения PRINTER для того, чтобы каждый пользователь мог указать тот принтер по умолчанию, который он предпочитает. Указываемый принтер должен быть описан в /etc/printers.conf.

    Страницы:

    С настройками печати в UNIX приходилось сталкиваться куда меньшему количеству людей, чем с многими другими задачами. Поэтому многие системные администраторы ограничивают себя знанием лишь самых основ – того, что существует демон печати lpd, и того, что для настройки печати может потребоваться файл /etc/printcap или /etc/printers.conf.

    В Solaris все может оказаться несколько сложнее, хотя и намного интереснее.

    Cистема печати в Solaris

    Системы Solaris могут использоваться и в качестве мощных серверов, и в качестве рабочих станций на рабочих местах пользователей. В последнем случае пользователям необходимо иметь возможность печатать тексты и изображения со своих компьютеров. Поэтому в Solaris обеспечивается работа с любыми принтерами: установленными локально, предоставляемыми сервером печати или отдельно подключенными к сети. Компьютер под управлением Solaris может как выполнять функции сервера печати, так и быть клиентом печати.

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

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

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

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

    Для настройки системы печати следует выполнить следующие работы:

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

    Сервер печати не предоставляет доступ к принтеру всем подряд, доступ разрешается на основании строгих правил. Чтобы принять решение о предоставлении доступа к принтеру тому или иному компьютеру, сервер печати использует какую-либо службу имен (DNS, NIS, LDAP) для определения имени обращающегося компьютера. Если на сервере печати не используется ни одна из служб имен, следует в файл /etc/inet/ hosts внести записи о каждом из компьютеров-клиентов печати.

    Для работы сервера печати необходимо, чтобы на нем было свободное дисковое пространство для хранения очереди заданий на печать, – его объем зависит от характера и количества заданий, одновременно отправляемых на печать, и обычно колеблется от 25 до 500 Мбайт. Такая область диска, предназначенная для хранения очереди печати, называется областью буферизации или спулом (spool – system peripheral operation offline). Помните, что размер файла в формате PS или PCL, подготовленный драйвером принтера для загрузки в последний, может сильно отличаться от размера исходного файла, например, документа OpenOffice. Это связано с необходимостью загрузки шрифтов, растеризации изображений и т.п.

    Рекомендуется, чтобы объем памяти системы под управлением Solaris, которая выполняет роль сервера печати, был не менее 96 Мбайт.

    Для того, чтобы сервер печати мог обеспечивать доступ к принтеру, следует указать, какие принтеры вообще доступны в системе и какой принтер надлежит использовать по умолчанию. Стало быть, надо иметь список доступных принтеров с указанием их имен и типов. Такой список содержится в файле /etc/printers.conf. Это отличает Solaris от других систем UNIX, поскольку в большинстве из них настройки принтеров хранятся в /etc/printcap. Такого файла в Solaris нет.

    Кроме этого, для каждого из типов принтеров требуется описание свойств принтера, такое, как указание оптического разрешения печати, кодов загрузки графики и т.п.. Эта информация хранится в той же структуре каталогов, где хранится информация об управляющих кодах терминалов – /usr/share/lib/terminfo. В подкаталогах этого каталога в алфавитном порядке собраны файлы, описывающие терминалы и принтеры. Так, описание принтеров Hewlett Packard Laser Jet содержится в файле /usr/share/lib/terminfo/h/hplaser. Эти файлы – двоичные, а не текстовые, поэтому их не следует редактировать напрямую. Вместо этого при необходимости модифицировать или добавить новое описание принтера или терминала следует создать исходный (текстовый) файл описания устройства и затем воспользоваться командой tic, которая превращает (компилирует) текстовый файл описания в стандартный двоичный файл, размещая последний в структуре каталогов /usr/share/lib/terminfo.

    Формат файла описания принтера описан в terminfo (4), следовательно, для изучения этой информации следует воспользоваться командой

    man terminfo

    или

    man 4 terminfo

    Для обратного превращения двоичного файла описания устройства – терминала или принтера – в исходный текстовый файл описания устройства нужно выполнить команду infocmp. Этой команде следует указывать в качестве аргумента имя устройства, а не путь к файлу описания, т.е. правильной командой будет

    infocmp hplaser

    а НЕ

    infocmp /usr/share/lib/terminfo/h/hplaser

    Последний вариант останется непонятым: программа infocmp ищет указанный ей файл в стандартной структуре каталогов или там, где указано переменной среды окружения TERMINFO.

    Для редактирования настроек системы печати как на сервере печати, так и на клиентах печати следует использовать программы printmgr ( /usr/sadm/admin/bin/printmgr ) и lpset.

    Вместо этого можно также редактировать вручную файл /etc/printers.conf: все равно вышеупомянутые программы вносят изменения именно в этот файл.

    Другие настройки локальных принтеров, в частности, физический порт, к которому подключен принтер (например, /dev/lp0 ), указываются в стурктуре каталогов /etc/lp/printers, в которой для каждого принтера есть свой подкаталог с настройками. Эти настройки можно редактировать вручную, но удобнее воспользовться командой lpadmin или программой Solaris Print Manager (printmgr).

    Например, для того, чтобы добавить новый принтер hplj на сервере печати, достаточно выполнить команду lpadmin. Команда lpadmin может выглядеть, например, так:

    lpadmin –p hplj –v /dev/lp0

    По этой команде в систему добавится локальный принтер с именем hplj, все обращения к этому принтеру будут выполняться через устрйоство /dev/lp0 (первый параллельный порт).

    Настройка клиента печати

    Клиент печати настраивается сходным образом: в файле /etc/printers.conf на клиенте печати будет указано, что принтер по умолчанию находится на компьютере, который выполняет роль сервера печати. В настройках клиента печати не обязательно определять права доступа к удаленному принтеру: это уже сделано в настройках сервера печати. Таким образом, минимальный файл /etc/printers.conf на клиенте печати, чьи задания на печать должны отправляться принтеру hplj на компьютере с именем printserver, будет выглядеть так:

    _default | lp:
    :use=printserver:
    :bsdaddr=printserver,hplj

    В этом файле, как видно, указано, что принтером по умолчанию для данного компьютера будет принтер hplj на компьютере printserver. В файле /etc/printers.conf на компьютере printserver должен быть определен принтер hplj, т.е. должно присутствовать описание вида:

    hplj:\
    :use=/dev/lp0:\
    bsdaddr=printserver,hplj,Solaris:

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

    Служба печати на сервере печати

    Для успешной обработки заданий на печать недостаточно просто указать свойства и имена принтеров. Потребуется еще и обеспечить работу программ, которые формируют задание на печать, отправляют его по месту назначения (к выбранному принтеру) и обеспечивают успешное выполнение задания.

    По пути от приложения, инициирующего печать, до принтера задание на печать должно быть обработано несколькими программами: программой lp (или lpr ) – для постановки в очередь на печать, lpsched – для обработки очереди, возможно, программами inetd и in.lpd – в случае, если задание отправлено на удаленную машину.

    Рассмотрим наиболее обычный вариант печати – с клиентской машины командой lp на удаленный принтер, который доступен через компьютер printbox.

    Мы распечатываем текстовый файл data.txt с помощью команды

    lp –d printbox:hplj data.txt
    (рис 10.1) Взаимодействие подсистем печати на компьютере – клиенте Solaris 2.6 и сервере печати Solaris 8

    Команда lpr в Solaris – это символическая ссылка на команду lp, поэтому что вызывать – lpr или lp – безразлично, будет вызвана одна и та же программа. Название lpr сохранено ради совместимости с другими системами UNIX.

    Задание на печать формируется командой lp и отправляется на компьютер printbox. Там его должен ждать демон inetd. Как только задание добирается до порта 515 на компьютере printbox, демон inetd на нем запускает программу in.lpd (согласно записи о службе printer в /etc/inetd.conf ) и передает ей пришедшее задание. Программа in.lpd помещает задание в область буферизации ( /var/spool/lp/* ) и сообщает программе lpsched, что ей пришло задание. Дальнейшая обработка задания ложится на службу печати, т.е. на lpsched. Именно эта программа запускает интерфейсную программу принтера, которая уже непосредственно взаимодействует с принтером.

    (рис 10.2) Взаимодействие подсистем печати на компьютере – клиенте Solaris 2.0 и сервере печати Solaris 2.5.1

    Такая схема, показанная на рис. 10.1, иллюстрирует взаимодействие клиента и сервера печати при условии, что версия системы клиента печати не ниже Solaris 2.0, а версия системы сервера печати – не ниже Solaris 2.6.

    В случае использования более старых систем Solaris схема взаимодействия будет более сложной; при отправке задания на печать на удаленный принтер будут выполнены следующие действия:

  • программа lp положит задание в локальную область буферизации ( spool ) на клиенте печати и передаст запрос локальному lpsched ;
  • локальный демон lpsched обратится к локальному демону lpNet, который запустит дочерний процесс lpNet и этот дочерний процесс передаст задание на сервер печати;
  • на сервере печати демон listen передаст запрос местному демону lpNet, который, в свою очередь, запустит дочерний процесс;
  • этот дочерний процесс lpNet на сервере печати положит задание в область буферизации на сервере печати и передаст задание lpsched ;
  • lpsched на сервер печати отправит задание на принтер.
  • Это иллюстрирует рис. 10.2:

    Рисунки взяты из Методического пособия компании Sun Microsystems "Системное администрирование ОС Solaris 8, часть 1".

    Добавление и настройка нового принтера

    В моей сети есть принтер HP LJ 5L, который подключен к сети с помощью принт-сервера (маленькой коробочки с интерфейсом Ethernet, обученной работать с протоколом печати BSD). Адрес принт-сервера в сети – 192.168.5.22. Как добавить этот принтер в конфигурацию Solaris, чтобы на нем можно было напрямую печатать файлы?

    Во-первых, надо создать запись об этом принтере в файле /etc/inet/ hosts или на сервере имен, чтобы система могла обратиться к принтеру по имени:

    cat /etc/inet/hosts
    #
    # Internet host table
    #
    127.0.0.1 localhost
    192.168.5.33 sunny loghost
    192.168.5.22 hp5l

    Затем следует модифицировать файл /etc/printers.conf:

    cat /etc/printers.conf
    #
    # If you hand edit this file, comments and structure may change.
    # The preferred method of modifying this file is through the use of
    # lpset(1M)
    #
    hplj:\
    :bsdaddr=hp5l,PS-1426:\
    :description=hplj:
    _default:\
    :use=hplj:

    Самая важная строка в нем – это bsdaddr. Помните, что в этой строке должно быть указано имя сервера, к которому подключен принтер (в нашем случае – это имя той самой коробочки-принт-сервера – hp5l ) и логическое имя принтера на этом сервере, т.е. то имя, под которым принтер известен серверу (в нашем случае это – PS-1426 ). Узнать это имя можно либо из документации к сетевому принтеру или принт-серверу, либо выяснить у администратора того компьютера, к которому подключен принтер, либо попробовать выяснить, подсоединившись с помощью telnet к принт-серверу:

    telnet hp5l
    Trying 192.168.5.22...
    Connected to hp5l.
    Escape character is '^]'.
    ************************************
    * Welcome to D-Link Print Server *
    * Telnet Console *
    ************************************
    Server Name : ps-1426
    Server Model : DP-101
    F/W Version : 1.34
    MAC Address : 00 50 BA 03 B6 47
    Uptime : 64 days, 04:32:19

    Программа Solaris Print Manager

    Для настройки подсистемы печати в Solaris можно использовать утилиту Solaris Print Manager. Она предоставляет простой графический интерфейс для добавления, удаления или изменения настроек принтера в системе.

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

    Вызов программы Solaris Print Manager выполняется командой

    /usr/sadm/admin/bin/printmgr 

    При запуске Solaris Print Manager вас спросят, какую службу имен следует использовать (рис. 10.3).

    (рис 10.3) Первый вопрос программы Solaris Print Manager

    Это связано с тем, что при подключении сетевых принтеров требуется определить их имена или имена хостов, к которым они подключены. Для подключения к таким принтерам с помощью Solaris Print Manager следует указать их IP-адреса в файле /etc/inet/hosts, в NIS или DNS.

    На рис. 10.4 представлено главное меню Solaris Print Manager.

    (рис 10.4) Главное меню Solaris Print Manager

    Программа предоставляет весьма скромный сервис, как видно из рис. 10.5 и рис. 10.6.

    (рис 10.6) Окно "добавить принтер" в Solaris Print Manager(рис 10.5) Окно "изменить свойства принтера" в Solaris Print Manager

    Управление принтерами с помощью admintool

    В системах Solaris, младших, чем Solaris 8, управление принтерами осуществлялось с помощью admintool. В настоящее время можно просмотреть свойства принтеров в системе с помощью admintool, но использовать эту программу для модификации этих свойств или добавления новых принтеров не следует. Для этого существует программа Solaris Print Manager, которая позволяет управлять всеми свойствами принтеров, добавлять новые и удалять ненужные принтеры из системы.

    Файлы и каталоги конфигурации подсистемы печати Solaris

    Принтер, выбираемый по умолчанию, должен быть поименован в переменных среды окружения LPDEST или PRINTER (проверяются именно в таком порядке), либо в переменной _default в файлах $HOME/.printers, /etc/printers.conf, либо в карте NIS printers.conf.byname. Если ни в одном из этих источников параметр с именем _default не обнаружится, стало быть, запрос на печать без указания имени принтера не может быть выполнен.

    Исполняемые файлы подсистемы печати находятся в /usr/bin ( lp, lpstat, cancel ), /usr/sbin ( lpadmin, lpusers, lpshut ). В /usr/share/lib/terminfo содержится база данных принтеров и терминалов, в /usr/lib/lp находятся lpshed, фильтры для обработки файла перед отправкой на печать, некоторые другие полезные программы.

    Каталог /etc/lp содержит файлы настроек подсистемы печати, а /var/spool/lp хранит текущие задания на печать и информацию о них.

    Файл протокола подсистемы печати – это /var/lp/logs/requests:

    ...
    = hplj-1, uid 0, gid 1, size 5, Срд 05 Май 2004 19:48:34
    z hplj
    C 1
    D hplj
    F /export/home/filip/q
    P 20
    T /export/home/filip/q
    t simple
    U root
    s 0x0040
    v 2
    = hplj-2, uid 0, gid 1, size 5, Срд 05 Май 2004 19:49:11
    z hplj
    C 1
    D hplj
    F /export/home/filip/q
    P 20
    T /export/home/filip/q
    t simple
    U root
    s 0x0040
    v 2
    ...

    Взаимодействие со службами имен

    Для того, чтобы корректно направить задание на печать к требуемому принтеру, программе lp необходимо знать содержимое файлов /etc/printers.conf и /etc/nsswitch.conf:

    cat /etc/printers.conf
    ...
    lp:\
    :bsdaddr=printbox,hplj, Solaris:
    ...
    cat /etc/nsswitch.conf
    ...
    printers: dns, nisplus, files
    ...

    Из первого файла lp выясняет, что для печати на принтер с локальным именем lp следует отправить задание принтеру hplj на компьютере printbox. Из второго файла становится ясно, что для того, чтобы найти ip-адрес компьютера printbox следует воспользоваться службами имен в следующем порядке: обратиться к серверу имен службы DNS (согласно содержимому /etc/resolv.conf ); если с помощью DNS найти адрес не удалось, надо обратиться к серверу NIS+, а если и эта попытка оказалась неудачной, посмотреть, нет ли записи о printbox в файле /etc/inet/hosts.

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

    Печать документов, просмотр и отмена заданий на печать

    Для печати документа можно выбрать в меню Print, если таковое меню имеется в задействованном приложении. При работе в командной строке для печати файла дайте команду

    lp имя_файла

    или

    lpr имя_файла

    Для просмотра очереди печати используют команду lpq:

    bash-2.05# cat >> lptest
    lptest
    bash-2.05# lp lptest
    request id is hplj-2 (1 file)
    bash-2.05# lpq
    Port Name PS-1426
    ==============================
    [Total Status]
    Job 41
    Sizes (KBytes) 10546
    Timeouts 0
    ------------------------------
    [Current Job]
    Printer Status On line
    Index 0
    Protocol
    Name
    Spooling Bytes 0
    Printing Bytes 0
    ==============================

    Отмена задания выполняется командой lprm:

    lp name_to_sysnum
    request id is hplj-4 (1 file)
    lprm hplj-4

    Команда lprm без параметров удаляет текущее (выполняемое) задание на печать.

    Все эти команды принимают имя принтера (то, которым принтер назван в /etc/printers.conf или в базе данных NIS) с ключом :

    lprm -P hplj

    Уникальной особенностью Solaris является возможность активировать или деактивировать принтер, описанный в /etc/printers.conf. Это делается командами enable и disable соответственно. Более того, можно временно приостановить прием запросов на печать для определенного принтера командой

    reject имя_принтера

    и затем восстановить прием заданий командой

    accept имя_принтера

    В некоторых командных процессорах команды accept, reject, enable и disable могут быть встроенными командами командного процессора, и тогда следует найти команды подсистемы печати, используя find или whereis, а затем запускать их, указывая полное имя команд.

    Настройка печати из Mozilla Firefox, StarOffice и OpenOffice

    Для печати из упомянутых программ может потребоваться дополнительная настройка – в случае, если хочется иногда печатать не только на принтере, принятом в системе по умолчанию (кстати, следите, чтобы в /etc/printers.conf был корректно описан принтер с именем default – его часто ищут различные приложения; то же относится и к принтеру _default ).

    Для печати из Firefox требуется отыскать каталог локальных настроек пользователя. Делаем так:

    cd ~/.mozilla/firefox
    grep default profiles.ini
    Name=default
    Path=ag2k9zrb.default
    (рис 10.7) Окно программы настройки принтеров spadmin для StarOffice/OpenOffice

    Имя подкаталога, который нам нужен – то, что указано в строке Path. Идем туда и создаем файл user.js:

    cd ag2k9zrb.default; cat user.js
    user_pref("print.printer_list", "default prn04p16 prn04p17 lduplex");
    user_pref("print.postscript.print_command", "/usr/bin/lpr
    ${MOZ_PRINTER_NAME:+'-P'}${MOZ_PRINTER_NAME}");
    user_pref("print.print_command", "/usr/bin/lpr
    ${MOZ_PRINTER_NAME:+'-P'}${MOZ_PRINTER_NAME}");

    Обратите внимание на список принтеров в первой строке – имена должны быть такие же, как в /etc/printer.conf.

    Для настройки печати из StarOffice или OpenOffice следует запустить программу spadmin (рис. 10.7). В моем Solaris Express она находится в /opt/staroffice8/program/. Программа настройки принтеров для StarOffice и OpenOffice имеет графический интерфейс и достаточно проста в работе, так что здесь мы не будем останавливаться на ней подробно.

    Многие приложения в Solaris могут отслеживать значение переменной среды окружения PRINTER для того, чтобы каждый пользователь мог указать тот принтер по умолчанию, который он предпочитает. Указываемый принтер должен быть описан в /etc/printers.conf.

    Вернуться к учебному плану