Внешняя память админа
вторник, 6 апреля 2010 г.
Принт-сервер для Windows клиентов на базе CUPS
Раз уж вспомнили про анализ статистики CUPS и WEB-интерфейс для него, заодно расскажу как этот самый CUPS настраивать для возможности печати как с Linux, так и Windows машин.
К тому же самому недавно пришлось переносить на новый сервер и, как выяснилось, сам кое что подзабыл, пришлось помучиться.
Добавил сюда инструкцию как прикрутить к Windows 7.
Что используем:
Gentoo
CUPS 1.3.11
SAMBA 3.0.37
hplip 3.9.12 (linux драйверы принтеров и утилиты от HewlettPackard)
foomatic 3.0 (linux драйверы принтеров)
cups-windows, adobeps (драйверы для Windows)
Установка
Обновляем дерево портеджей:
# USE=»jpeg tiff png ppds samba ssl slp tiff zeroconf» emerge -av cups
# USE=»hpcups hpijs snmp» emerge -av hplip
# USE=»cups» emerge -av foomatic-db foomatic-db-engine foomatic-db-ppds foomatic-filters foomatic-filters-ppds
application/octet-stream application/vnd.cups-raw 0 —
Order Deny,Allow
Deny From All
Allow From 192.168.0.*
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 192.168.0.*
# /etc/init.d/cupsd start
# rc-update -a cupsd default
Теперь можно подключиться к WEB-интерфейсу CUPS, настроить все необходимые параметры и установить принтеры. Тут уже можно подключать Linux клиентов.
В случае использования принтеров HewlettPackard, запускаем hp-setup и следуем указаниям мастера установки. Все необходимые настройки CUPS будут сделаны автоматически. В процессе работы, мастер попытается установить плагин для CUPS, в моем случае ему это не удалось, ругнулся на то, что установщик плагина не понимает ключа -i. Пришлось установить его в ручную, предварительно установив пакет dbus-python, без него ставиться не захотел. Скачанный мастером плагин можно найти в папке /var/tmp, называется он hplip-3.9.12-plugin.run
samba:
Редактируем /etc/samba/smb.conf
[global][share]
#Имя рабочей группы/домена
workgroup = MSHOME
#Имя сервера в сети
netbios name = samba
#Комментарий
server string = file and printer server
hosts allow = 192.168.0.
#security обязательно user!
#по завершении всех ниже описанных операций можно изменить на share
security = user
load printers = yes
printing = cups
printcap name = cups
use client driver = no
#Путь к папке, которую нужно расшарить
path = /home/shared-folder
comment = shared files
read only = no
browseable = yes
guest ok = yes [printers]
comment = All Printers
path = /var/spool/samba
browseable = yes
printable = yes
writable = no
guest ok = yes [print$]
comment = Printer Drivers
path = /usr/share/cups/drivers
browseable = yes
guest ok = yes
read only = yes
write list = root
# /etc/init.d/samba start
# rc-update -a samba default
# cupsaddsmb -H localhost -U root -h localhost -a
в секцию [global] .
Настройка принтера в Windows 7
Устанавливаем в Windows драйвер принтера.
Заходим в меню «Пуск», запускаем пункт «Устройства и принтеры». В открывшемся окне нажимаем кнопку «Установка принтера»:
Нажимаем «Нужный принтер отсутствует в списке».
Linux/BSD Проще не бывает!
Печать из CUPS на розшаренный в Windows принтер.
Простенькая задачка — необходимо настроить печать по сети из Linux на принтер физически подключенный к машинке с Windows XP и розшаренный по samba. Простенькая потому, что рещается за пару минут 🙂 Итак, оглашу все вводный данные перед началом «плясок с бубном».
WinXP:
- ip — 192.168.0.5
- принтер розшарен под именем HP1320
- Пользователь — print (от имени этого пользователя мы будем печатать на винде)
- Пароль — 123 (это пароль вишеупомянутого пользователя print)
Linux:
- hostname — ws4.intranet
- cups — версия 1.4.2
В моем случае обе машинки были удаленные. Но это не составляет труда, поскольку попасть в админку CUPS можно просто набрав в браузере URL https://ws4.intranet:631/admin
Тут возможны как минимум 3 варианта. Или вас не пустит с ошибкой 403 Forbidden, либо пустит но спросит при первом же действии логин/пароль пользователя имеющего право управлять системой печати и последний вариант — не пустит совсем! Итак лечится каждый вариант посвоему:
- 403 Forbidden — Нужно разрешить удаленное администрирование CUPS. Сделать это можно поправив по ssh на сервере с CUPS конфиг /etc/cups/cupsd.conf (добавить Allow From в нужные вам секции) или зайдя браузером непосредственно с машинки где установлен CUPS на URL https://localhost:631/admin и поставить галочку «Разрешить удаленное администрирование»
- Пускает но при попытке чтолибо поменять/удалить/добавить сразу спрашивает Login/Password — так и должно быть! Просто вводим login/password рута или другого уполномоченного на управление системой печати пользователя.
- Совсем никакой реакции! Висит а потом браузер говорит что немогу подключиться к серверу — Просто надо проверить запущен ли CUPS и разрешено ли ему слушать чтолибо кроме localhost. Не закрыто ли фаерволом? Ну и логи CUPS никто не отменял 🙂
У меня с подключением никаких приколов небыло, просто ввел URL в браузере https://ws4.intranet:631/admin и все прекрасно загрузилось (вернее, уже во время добавления принтера спросило login/password — рутовых данных хватило с головой). Короче, увидел такую вот web админку:
Дальше жмем кнопочку слева «Добавить Принтер» и попадаем к выбору типа принтера.
Тут я выбрал Windows Printer via SAMBA (видно на картинке). Жмем «Продолжить». После этого попадаем на этап указания сервера и строки подключения вцелом. Тут самое интересное — строка подключения 🙂 В ней используется имя пользователя/пароль виндового пользователя для авторизации по SAMBA на виндовой машине. Вобщем, все видно на скриншоте:
Жмем «Продолжить». Попадаем в дополнительные настройки подключаемого принтера. Тут можно прописать название принтера (под этим именем он будет подключен в систему) а также расположение и описание. Пишим то что считаем нужным. Я заполнил так:
Прописали? Жмем «Продолжить». Отрывается следующая страничка мастера подключения принтеров в которой уже предлагается выбрать производителя нашей железки (принтера) ну или сразу ppd файл 🙂
У меня небыло ppd-шки — выбрал просто HP и нажал «Продолжить». Заключительным шагом был выбор драйвера для принтера. Делается все также просто:
Выделяем нужный нам драйвер и жмем «Добавить принтер». Если все сделано как надо, то в списке принтеров должен появиться принтер 🙂 В этом можно убедиться просто зайдя на вкладку «Принтеры». Притом можно ходить как по http так и по https. К примеру я зашел используя такой URL: http://ws4.intranet/printers Вот что там увидел:
Как видите, принтер подключился и ожидает задания 🙂 Ну как пользоваться принтером вы уже и сами разберетесь. Такчто на этом мой рассказ пришел к логическому завершению 🙂
Всем удачи и безглючной печати в придачу 😉
Управление сервером CUPS и его конфигурирование
Система печати CUPS – универсальный и очень гибкий инструмент для организации печати и управления принтерами в сети. При этом CUPS довольно просто администрируется, из-за чего эта система очень популярна среди системных администраторов. Также эта система обладает некоторыми особенностями и возможностями. Которые, если ими грамотно и умело распоряжаться, делают CUPS незаменимой для построения системы печати в обслуживаемой сети.
Управление сервером CUPS
Работа системы печати CUPS завязана на взаимодействии клиентов печати с самим сервером cupsd. Вообще, то как работает cupsd, очень похоже на то как работает веб-сервер Apache. Даже формат конфигурационного файла /etc/cups/cupsd.conf очень похож на соответствующий файл Apache. Как можно видеть работа сервера cupsd определяется настройками, заданными в файле cupsd.conf, а настройка его работы и управление им аналогична настройке и управлению Apache.
По-умолчанию, так сказать «из коробки» файл cupsd.conf очень детально комментирован и разобраться с теми или иными опциями особого труда не составляет. Чтение конфигурации производится сервером cupsd только в момент запуска. Поэтому после внесения и сохранения сделанных настроек необходимо перезапустить cupsd. Это можно сделать стандартным для Linux образом, выполнив команду:
Для редактирования конфигурационного файла системы CUPS можно использовать не только текстовые редакторы, но также и графический веб-интерфейс, доступный по адресу http://localhost:631/admin в веб-браузере.
Если используется графическая среда, то в современных дистрибутивах в настройках системы всегда имеется отдельный раздел для управления печатью и принтерами, который предоставляет, пусть и самые базовые, но достаточные возможности для управления и настройки системы печати.
Настройка сервера печати для сети
Когда в сети имеются несколько принтеров, которые по объективным причинам не могут быть подключены к одному компьютеру или когда принтеры не подключены непосредственно к тому компьютеру, на котором работает главный сервер CUPS, то целесообразно настроить сервер cupsd, так, чтобы он мог принимать задания на печать из сети. По-умолчанию CUPS работает с локально установленными принтерами, а для того, чтобы она могла обрабатывать задания из сети, в конфигурационном файле cupsd.conf нужно внести некоторые изменения. Для начала, в секции Location:
нужно добавить ещё одну директиву «Allow From». В итоге должно получиться:
Таким образом, в качестве адреса сети может выступать IP-адрес (например 192.168.0.0), для которой следует обслуживать задания. После этого следует указать директиву BrowseAddress:
Она задаёт адрес и порт для рассылки информации об обслуживаемых сервером cupsd принтерах всем компьютерам из указанной с помощью директивы «Allow From» сети.
Конфигурирование в автоматическом режиме
В большинстве случаев при добавлении новых принтеров система CUPS способна самостоятельно определить, что в систему устанавливается новый принтер. В самом сложном случае придётся выполнить эту процедуру вручную через веб-интерфейс системы CUPS и пройти через несколько несложных этапов установки и настройки принтера. Это всецело заменяет работу того самого «удобного» установочного ПО (программного обеспечения). Которое поставляется производителями принтеров для систем Windows и Mac OS, но обходит стороной (довольно часто) системы Linux.
Если CUPS сконфигурирована так, что автоматически могут распознаваться принтеры, подключаемые к другим компьютерам в сети (и даже из других подсетей). То центральный сервер cupsd просто получит уведомление об этом и сможет обслуживать новые принтеры. Причём об этом будут «знать» все сконфигурированные клиенты данной сети и даже подсетей. Это возможно благодаря тому, что на каждом компьютере, на котором установлена и запущена система CUPS работает свой сервер cupsd, который обменивается (если задана соответствующая конфигурация) информацией о «своих» принтерах с серверами на других машинах, предоставляя общий пул принтеров в сети.
Это очень удобно, ведь в большинстве случаев нет необходимости добавлять новый локальный или даже удалённый принтер в перечень доступных устройств печати для локальной машины или копировать его PDD-файл.
Конфигурирование сетевых принтеров
Для этой задачи в системах Linux нет ничего необычного. В данном случае даже используемая система печати особой роли не играет, поскольку сетевая конфигурация сводится к заданию IP-адреса собственно, принтеру. Сделать это можно двумя способами:
- использовать DHCP-сервер, который автоматически будет «выдавать» сетевым устройствам, в том числе и подключенным к сети принтерам их IP-адреса;
- использовать статический IP-адрес для принтера, заданный вручную.
Для второго случая используется консоль принтера (с кнопками, табло и т. д.), в меню которого можно отыскать раздел для задания IP-адреса. Также некоторые принтеры предоставляют виртуальную консоль, доступную через подключение (к принтеру) по последовательному порту.
Некоторые модели принтеров даже предоставляют красивый и удобный веб-интерфейс для конфигурации. Однако задействовать его можно только после того как IP-адрес для принтера задан и он доступен в сети.
Добавление принтеров в систему CUPS может быть произведено с помощью команды lpadmin, например так:
Первая команда добавляет локально подключенный принтер (через параллельный интерфейс) под именем localprinter. Подключая его через порт /dev/lp0. А вторая команда добавляет сетевой принтер netprinter. Подключая его через IP-адрес 192.168.0.5. При этом в обоих случаях для каждого устройства указываются универсальные URI-идентификаторы (составляющие адрес подключения) и PDD-файл (PostScript Printer Description). Доступный из набора таких файлов в каталоге /usr/share/cups/model.
Теперь, если сервер cups настроен как сетевой сервер печати. То добавленные принтеры станут доступными для всей сети. При этом перезапуск cupsd не требуется.
Для разных конфигураций подключения существуют различные варианты URI-идентификаторов, например:
Как можно видеть, в URI-идентификаторах могут использоваться передаваемые параметры. Чтобы узнать, какие устройства печати доступны системе CUPS, а также понятный ей список типов URI-идентификаторов. Можно воспользоваться командой lpinfo -v:
Классы принтеров
Классы принтеров предназначены для группирования принтеров, которые должны обслуживаться одной очередью заданий. Для любого из принтеров одного класса может быть доступно для выполнения текущее задание. Однако передано задание будет тому, кто первый освободился в очереди.
Чтобы создать класс принтеров classprint, и добавить в него принтеры printerone и printertwo, следует выполнить следующие команды:
Как видно, специальной команды для задания класса нет — он существует когда в него добавлен принтер. В системе CUPS также можно задавать нескольким принтерам одинаковые имена и при этом они будут считаться объединёнными в один класс. Такие вот интеллектуальные способности у CUPS.
Отключение принтеров
Иногда необходимо временно сделать принтер недоступным для печати. Т. е. чтобы сервер cupsd не удалял его из своего пула обслуживания, а просто не отправлял на него задания от клиентов. Такие ситуации возникают, когда принтер нужно временно отсоединить для обслуживания. Чтобы полностью удалить принтер (или класс) следует использовать команду:
Для временного отключения принтера используется блокировка очереди печати для него. Причём блокироваться может как «выходная» часть очереди (на стороне принтера), так и «входная» — на этапе формирования самой очереди сервером. В первом случае задания всё равно будут отправляться на принтер, но никогда не будут выполнены. Во втором случае выполнены будут только те задания, которые уже находились в очереди. А все последующие после блокировки «входа» будут отклоняться.
Для контроля над выходной частью очереди печати (на стороне принтера) предназначены команды cupsdisable и cupsenable – которые выключают и включают выход соответственно. Для управления состоянием входа очереди предназначены команды reject и accept.
Если принтер становится «недоступным » на длительное время (например унесли на ремонт или обслуживание). То целесообразнее использовать отключение его от его очереди, т. е.:
Если же точно известно, что принтер будет недоступен около двадцати минут (пока будет производится замена картриджа). То можно использовать команду:
Чтобы легче запомнить и надёжнее применять эти команды в зависимости от ситуации. Нужно понимать, что отклоняются (reject) и принимаются (accept) задания очереди. А отключаются (cupsdisable) и включаются (cupsenable) только устройства — т. е. принтеры. Совсем неразумно использовать команду cupsdisable, если принтер недоступен длительное время. При этом на него поступают (через вход очереди) задания, которые скорее всего не выполнятся. Команда reject в данном случае предпочтительнее.
В следующей таблице приведены все команды, используемые системой CUPS:
Команда | Назначение |
cups-config | Выводит информацию об API-интерфейсе, компиляторе, каталоге и канале связи системы CUPS. |
cupsdconf | Утилита для конфигурирования. |
cupsdisable | Отключает печать принтера или класса. |
cupsenable | Включает печать принтера или класса. |
lpinfo | Показывает доступные устройства или драйверы. |
lpoptions | Отображает или устанавливает опции и параметры по умолчанию принтера. |
Ippasswd | Добавляет, изменяет или удаляет пароли дайджеста. |
По каждой из этих команд можно получить подробную справку из интерактивного справочного руководства. Используя команду man команда.
Заключение
Система печати CUPS пожалуй самая удачная среди открытых и свободных систем подобного рода. Не обременяющая администраторов излишней сложностью или неповоротливостью. Но при этом предоставляет практически неограниченные возможности для масштабирования и интеграции в целевых системах и сетях.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.