вторник, 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)


Установка
Обновляем дерево портеджей:
# emerge --sync
CUPS:
# USE="jpeg tiff png ppds samba ssl slp tiff zeroconf" emerge -av cups
samba:
# USE="cups" emerge -av samba
hplip:
# USE="hpcups hpijs snmp" emerge -av hplip
foomatic:
# USE="cups" emerge -av foomatic-db foomatic-db-engine  foomatic-db-ppds foomatic-filters foomatic-filters-ppds
драйверы для Windows:
# emerge cups-windows
пакет adobeps в Gentoo на данный момент замаскирован, поэтому либо размаскируем, либо-
# ACCEPT_KEYWORDS="~x86" emerge adobeps
Чтобы не прописывать каждый раз ключи, можно прописать их в секцию USE  в файле /etc/make.conf, но следует это делать осторожно, поскольку можно нарваться на конфликты пакетов.


Настройка
CUPS:
Редактируем /etc/cups/mime.convs раскоментируем строку:
application/octet-stream application/vnd.cups-raw 0 -
/etc/cups/mime.types раскоментируем  строку:
application/octet-stream
Для разрешения доступа к WEB-интерфейсу CUPS по сети, редактируем /etc/cups/cupsd.conf
<location>
Order Deny,Allow
Deny From All
Allow From 192.168.0.*

<location admin="">
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 192.168.0.*
</location></location>
 Запускаем CUPS и добавляем его в автозапуск
# /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]
#Имя рабочей группы/домена
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

[share]
#Путь к папке, которую нужно расшарить
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
Запускаем samba и добавляем в автозапуск
# /etc/init.d/samba start
# rc-update -a samba default
Заводим в системе пользователей ПК с Windows, которым нужно дать доступ к принтерам
# adduser ivanov
Заводим для созданных пользователей пароли в samba, в том числе и для root
# smbaddpasswd -a ivanov
Чтобы при установке принтера на Windows клиенте принт-сервер автоматом подсовывал ему нужный драйвер, выполняем -
# cupsaddsmb -H localhost -U root -h localhost -a
Если до этого не был заведен пароль для доступа root к samba, то тут ничего не выйдет.
Если все прошло нормально, то в папке /usr/share/cups/drivers появятся две папки с драйверами для Windows - WIN40 и W32X86
Теперь можно зайти на сервер с Windows клиента, войти в папку "Принтеры и факсы", выбрать нужный принтер, кликнуть по нему правой кнопкой мыши и выбрать в меню пункт "Установить". Если принтер установится без запроса на установку драйвера, то все получилось как надо.
UPD 1
Для того, чтобы появилась возможность печати из Windows 7, в smb.conf необходимо добавить строку:
cups option = raw
в секцию [global] .
Настройка принтера в Windows 7
Устанавливаем в Windows драйвер принтера.
Заходим в меню "Пуск", запускаем пункт "Устройства и принтеры". В открывшемся окне нажимаем кнопку "Установка принтера":


Выбираем пункт "Добавить сетевой, беспроводной или Bluetooth-принтер


Нажимаем "Нужный принтер отсутствует в списке".


Выбираем пункт "Выбрать общий принтер по имени" и вписываем адрес принтера в виде: 
"http://192.168.0.111:631/printers/имя_принтера" и нажимаем "Далее"


Выбираем драйвер принтера, установленный нами ранее и нажимаем "ОК". Дожидаемся окончания установки драйвера, должно появиться сообщение о том, что принтер успешно подключен.
На этом пока все. 
Всем успехов!


2 комментария:

  1. О, спасибо. Искал такой ман, чтобы без воды: просто и четко.

    Можно себе в блог утяну под Ваш копирайт?

    ОтветитьУдалить