С настройками печати в UNIX приходилось сталкиваться куда меньшему количеству людей, чем с многими другими задачами. Поэтому многие системные администраторы ограничивают себя знанием лишь самых основ – того, что существует демон печати lpd, и того, что для настройки печати может потребоваться файл /etc/printcap или /etc/printers.conf.
В Solaris все может оказаться несколько сложнее, хотя и намного интереснее.
Системы Solaris могут использоваться и в качестве мощных серверов, и в качестве рабочих станций на рабочих местах пользователей. В последнем случае пользователям необходимо иметь возможность печатать тексты и изображения со своих компьютеров. Поэтому в Solaris обеспечивается работа с любыми принтерами: установленными локально, предоставляемыми сервером печати или отдельно подключенными к сети. Компьютер под управлением Solaris может как выполнять функции сервера печати, так и быть клиентом печати.
Под сервером печати понимают систему, которая обрабатывает и выполняет запросы на печать, при этом принтер может быть присоединен непосредственно к этой системе или быть подключенным напрямую в локальную сеть. В последнем случае сервер печати выполняет роль "ретранслятора" – принимает задания на печать от других компьютеров, организует очередь печати и отправляет задания из очереди принтеру для выполнения.
Клиент печати – это любая система, которая требует от сервера печати выполнения задания на печать, клиент формирует задание и отправляет его на сервер. Клиентом и сервером печати одновременно может быть один и тот же компьютер. Сервером печати может быть как компьютер, так и отдельное специальное устройство; такие устройства также встраиваются в сетевые принтеры.
В Solaris есть программы, которые непосредственно управляют печатью, обращаясь к принтеру, программы, которые обрабатывают очередь заданий на печать, программы, управляющие принтерами (например, устанавливающими новый драйвер принтера в системе).
В этой лекции будут рассмотрены настройки системы печати, а в следующей – графический инструментарий системного администратора.
Для настройки системы печати следует выполнить следующие работы:
Сервер печати не предоставляет доступ к принтеру всем подряд, доступ разрешается на основании строгих правил. Чтобы принять решение о предоставлении доступа к принтеру тому или иному компьютеру, сервер печати использует какую-либо службу имен (DNS, NIS, LDAP) для определения имени обращающегося компьютера. Если на сервере печати не используется ни одна из служб имен, следует в файл /etc/inet/ hosts внести записи о каждом из компьютеров-клиентов печати.
Для работы сервера печати необходимо, чтобы на нем было свободное дисковое пространство для хранения очереди заданий на печать, – его объем зависит от характера и количества заданий, одновременно отправляемых на печать, и обычно колеблется от 25 до 500 Мбайт. Такая область диска, предназначенная для хранения очереди печати, называется областью буферизации или спулом (spool – system
Рекомендуется, чтобы объем памяти системы под управлением Solaris, которая выполняет роль сервера печати, был не менее 96 Мбайт.
Для того, чтобы сервер печати мог обеспечивать доступ к принтеру, следует указать, какие принтеры вообще доступны в системе и какой принтер надлежит использовать по умолчанию. Стало быть, надо иметь список доступных принтеров с указанием их имен и типов. Такой список содержится в файле /etc/printers.conf. Это отличает Solaris от других систем UNIX, поскольку в большинстве из них настройки принтеров хранятся в /etc/printcap. Такого файла в Solaris нет.
Кроме этого, для каждого из типов принтеров требуется описание свойств принтера, такое, как указание оптического /usr/share/lib/terminfo. В подкаталогах этого каталога в алфавитном порядке собраны файлы, описывающие терминалы и принтеры. Так, описание принтеров Hewlett Packard /usr/share/lib/terminfo/h/hplaser. Эти файлы – двоичные, а не текстовые, поэтому их не следует редактировать напрямую. Вместо этого при необходимости модифицировать или добавить новое описание принтера или терминала следует создать исходный (текстовый) файл описания устройства и затем воспользоваться командой , которая превращает (компилирует) текстовый файл описания в стандартный двоичный файл, размещая последний в структуре каталогов /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
Например, для того, чтобы добавить новый принтер 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 принтер должен уметь работать с языком PostScript. Использовать такой принтер с Solaris, равно и с любым другим UNIX, намного легче, чем принтер, не понимающий PostScript.
Вызов программы Solaris
/usr/sadm/admin/bin/printmgr
При запуске Solaris
(рис 10.3) Первый вопрос программы Solaris Print ManagerЭто связано с тем, что при подключении сетевых принтеров требуется определить их имена или имена хостов, к которым они подключены. Для подключения к таким принтерам с помощью Solaris /etc/inet/hosts, в NIS или DNS.
На рис. 10.4 представлено главное меню Solaris
(рис 10.4) Главное меню Solaris Print ManagerПрограмма предоставляет весьма скромный сервис, как видно из рис. 10.5 и рис. 10.6.

(рис 10.6) Окно "добавить принтер" в Solaris Print Manager(рис 10.5) Окно "изменить свойства принтера" в Solaris Print Manager
В системах Solaris, младших, чем Solaris 8, admintool. В настоящее время можно просмотреть свойства принтеров в системе с помощью admintool, но использовать эту программу для модификации этих свойств или добавления новых принтеров не следует. Для этого существует программа Solaris
Принтер, выбираемый по умолчанию, должен быть поименован в переменных среды окружения LPDEST или PRINTER (проверяются именно в таком порядке), либо в переменной _default в файлах $HOME/.printers, /etc/printers.conf, либо в 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, а затем запускать их, указывая полное имя команд.
Для печати из упомянутых программ может потребоваться дополнительная настройка – в случае, если хочется иногда печатать не только на принтере, принятом в системе по умолчанию (кстати, следите, чтобы в /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 все может оказаться несколько сложнее, хотя и намного интереснее.
Системы Solaris могут использоваться и в качестве мощных серверов, и в качестве рабочих станций на рабочих местах пользователей. В последнем случае пользователям необходимо иметь возможность печатать тексты и изображения со своих компьютеров. Поэтому в Solaris обеспечивается работа с любыми принтерами: установленными локально, предоставляемыми сервером печати или отдельно подключенными к сети. Компьютер под управлением Solaris может как выполнять функции сервера печати, так и быть клиентом печати.
Под сервером печати понимают систему, которая обрабатывает и выполняет запросы на печать, при этом принтер может быть присоединен непосредственно к этой системе или быть подключенным напрямую в локальную сеть. В последнем случае сервер печати выполняет роль "ретранслятора" – принимает задания на печать от других компьютеров, организует очередь печати и отправляет задания из очереди принтеру для выполнения.
Клиент печати – это любая система, которая требует от сервера печати выполнения задания на печать, клиент формирует задание и отправляет его на сервер. Клиентом и сервером печати одновременно может быть один и тот же компьютер. Сервером печати может быть как компьютер, так и отдельное специальное устройство; такие устройства также встраиваются в сетевые принтеры.
В Solaris есть программы, которые непосредственно управляют печатью, обращаясь к принтеру, программы, которые обрабатывают очередь заданий на печать, программы, управляющие принтерами (например, устанавливающими новый драйвер принтера в системе).
В этой лекции будут рассмотрены настройки системы печати, а в следующей – графический инструментарий системного администратора.
Для настройки системы печати следует выполнить следующие работы:
Сервер печати не предоставляет доступ к принтеру всем подряд, доступ разрешается на основании строгих правил. Чтобы принять решение о предоставлении доступа к принтеру тому или иному компьютеру, сервер печати использует какую-либо службу имен (DNS, NIS, LDAP) для определения имени обращающегося компьютера. Если на сервере печати не используется ни одна из служб имен, следует в файл /etc/inet/ hosts внести записи о каждом из компьютеров-клиентов печати.
Для работы сервера печати необходимо, чтобы на нем было свободное дисковое пространство для хранения очереди заданий на печать, – его объем зависит от характера и количества заданий, одновременно отправляемых на печать, и обычно колеблется от 25 до 500 Мбайт. Такая область диска, предназначенная для хранения очереди печати, называется областью буферизации или спулом (spool – system
Рекомендуется, чтобы объем памяти системы под управлением Solaris, которая выполняет роль сервера печати, был не менее 96 Мбайт.
Для того, чтобы сервер печати мог обеспечивать доступ к принтеру, следует указать, какие принтеры вообще доступны в системе и какой принтер надлежит использовать по умолчанию. Стало быть, надо иметь список доступных принтеров с указанием их имен и типов. Такой список содержится в файле /etc/printers.conf. Это отличает Solaris от других систем UNIX, поскольку в большинстве из них настройки принтеров хранятся в /etc/printcap. Такого файла в Solaris нет.
Кроме этого, для каждого из типов принтеров требуется описание свойств принтера, такое, как указание оптического /usr/share/lib/terminfo. В подкаталогах этого каталога в алфавитном порядке собраны файлы, описывающие терминалы и принтеры. Так, описание принтеров Hewlett Packard /usr/share/lib/terminfo/h/hplaser. Эти файлы – двоичные, а не текстовые, поэтому их не следует редактировать напрямую. Вместо этого при необходимости модифицировать или добавить новое описание принтера или терминала следует создать исходный (текстовый) файл описания устройства и затем воспользоваться командой , которая превращает (компилирует) текстовый файл описания в стандартный двоичный файл, размещая последний в структуре каталогов /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
Например, для того, чтобы добавить новый принтер 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 принтер должен уметь работать с языком PostScript. Использовать такой принтер с Solaris, равно и с любым другим UNIX, намного легче, чем принтер, не понимающий PostScript.
Вызов программы Solaris
/usr/sadm/admin/bin/printmgr
При запуске Solaris
(рис 10.3) Первый вопрос программы Solaris Print ManagerЭто связано с тем, что при подключении сетевых принтеров требуется определить их имена или имена хостов, к которым они подключены. Для подключения к таким принтерам с помощью Solaris /etc/inet/hosts, в NIS или DNS.
На рис. 10.4 представлено главное меню Solaris
(рис 10.4) Главное меню Solaris Print ManagerПрограмма предоставляет весьма скромный сервис, как видно из рис. 10.5 и рис. 10.6.

(рис 10.6) Окно "добавить принтер" в Solaris Print Manager(рис 10.5) Окно "изменить свойства принтера" в Solaris Print Manager
В системах Solaris, младших, чем Solaris 8, admintool. В настоящее время можно просмотреть свойства принтеров в системе с помощью admintool, но использовать эту программу для модификации этих свойств или добавления новых принтеров не следует. Для этого существует программа Solaris
Принтер, выбираемый по умолчанию, должен быть поименован в переменных среды окружения LPDEST или PRINTER (проверяются именно в таком порядке), либо в переменной _default в файлах $HOME/.printers, /etc/printers.conf, либо в 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, а затем запускать их, указывая полное имя команд.
Для печати из упомянутых программ может потребоваться дополнительная настройка – в случае, если хочется иногда печатать не только на принтере, принятом в системе по умолчанию (кстати, следите, чтобы в /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.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.