CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
22.05.2019

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки :: Блогометки :: Сети и Интернет

Настраиваем печать в Linux

http://gq.net.ru

Итак задача:

Есть разнородная сеть, состоящая из нескольких виндовых машин, и нескольких линуксовых. К нескольким виндовым машинам и нескольким линуксовым подключены принтеры. Как настроить это все хозяйство, чтобы печать работала со всех машин на все принтеры максимально прозрачно?

Понятное дело, что в винде просто подключаем принтер, ставим драйвера, расшариваем принтер для доступа к нему по сети и все. Удаленные виндовые драйвера подключаем при помощи встроенных виндовых средств.

Под линуксом:

На тех машинах, к которым подключены принтеры, устанавливаем CUPS. Далее настраиваем принтер через его веб-интерфейс (PPD файлики используем либо встроенные, либо с http://linuxprinting.org). Возможно еще потребуется поставить hpijs.

Далее ставим галочку “Расшарить принтеры” все в том же веб-интерфейсе.

На тех, машинах, которые должны видеть чужие принтеры, тоже ставим CUPS и ставим галочку “Подключать расшаренные принтеры”.

Если машины находятся в разных сетях, придется поправить Access-лист на хосте с принтером и указать

BrowsePoll <CupsServerHostName>

на тех машинах, которые должны подключать удаленные принтеры.

Кстати сакральное знание, которого нету в доках: @LOCAL у CUPS’а значит “любая локальная подсеть, то есть подсеть заданная для любого интерфейса, кроме ppp”.

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

Теперь подключение виндовых принтеров к линуксу: на одном из CUPS’ов подключаем удаленный принтер, указав ему URI “smb://windowHost/printerShare”. Естественно должна стоять поддержка Samb’ы. И этот хост расшаривает подключенный принтер остальным линуксовым хостам средствами CUPS’а.

А вот обратно всё хитрее.

Во-первых, ставим самбу. У нее должен быть подключен CUPS:

[global]
    load printers = yes
    printing =  cups
    printcap name = cups

И должны быть 2 хитрых шары:

[printers]
    path = /var/spool/samba
    guest ok = yes
    browseable = no
    printable = yes
    printer admin = @lpadmin

[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = no
   read only = yes
   guest ok = yes
   write list = @lpadmin

В качестве группы администраторов я использовал lpadmin - это группа, которая используется для администрирования CUPS’а. Эта группа обязательно должна иметь права на запись в каталог /var/lib/samba/printers.

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

Как залить дрова на самбу.

Подключаем принтер к какой-нибудь виндовой машине (по сети через самбу) и устанавливаем его драйвера. На виндовой же машине расшариваем этот принтер. Затем на линуксовом хосте говорим:

$ rpcclient <имя виндовой машины> -c 'getdriver "<имя принтера>"'

Получаем что-то вроде:

[Windows NT x86]
Printer Driver Info 3:
        Version: [3]
        Driver Name: [HP LaserJet P2015 Series PCL 5e]
        Architecture: [Windows NT x86]
        Driver Path: [\\\\POSTMAN\\print$\\W32X86\\3\\UNIDRV.DLL]
        Datafile: [\\\\POSTMAN\\print$\\W32X86\\3\\HPC20155.GPD]
        Configfile: [\\\\POSTMAN\\print$\\W32X86\\3\\UNIDRVUI.DLL]
        Helpfile: [\\\\POSTMAN\\print$\\W32X86\\3\\UNIDRV.HLP]

        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpzui43e.dll]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hppdvq01.dll]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpz5r43e.dll]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpcdmc32.dll]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hplj1xxx.exp]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpzsm43e.gpd]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpzst43e.dll]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\HPC2015W.HTML]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\HPC2015W.SWF]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\HPC2015W.XML]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpzev43e.dll]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpzhl43e.cab]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\STDNAMES.GPD]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpc20155.xml]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpc2015b.ini]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpzsc43e.dtd]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpzls43e.dll]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\hpzss43e.dll]
        Dependentfiles: [\\\\POSTMAN\\print$\\W32X86\\3\\UNIRES.DLL]

        Monitorname: []
        Defaultdatatype: []

После этого вытаскиваем с этой виндовой машины все файлики, которые она нам выдала (если не заметили - все имена, это пути к файлам в виндовой нотации \\хост\шара\имяфайла). Кладем эти файлики в каталог /var/lib/samba/printers/W32X86/ (либо руками, либо через самбу, у нас же этот каталог расшарен под именем “Print$”).

Теперь самое страшное: создаем запись об этом драйвере:

$ rpcclient localhost -c 'adddriver "Windows NT x86" "HP LaserJet P2015 Series PCL 5e:UNIDRV.DLL:HPC20155.GPD:UNIDRVUI.DLL:UNIDRV.HLP:NULL:RAW:hpzui43e.dll,hppdvq01.dll,hpz5r43e.dll,hpcdmc32.dll,hplj1xxx.exp,hpzsm43e.gpd,hpzst43e.dll,HPC2015W.HTML,HPC2015W.SWF,HPC2015W.XML,hpzev43e.dll,hpzhl43e.cab,STDNAMES.GPD,hpc20155.xml,hpc2015b.ini,hpzsc43e.dtd,hpzls43e.dll,hpzss43e.dll,UNIRES.DLL" 3'

(Здесь устанавливаем все на localhost и текуший юзер входит в группу lpadmin. Если надо логиниться под другим юзером - используйте ключик -U. Ну и естественно, не забываем, что самба использует свою собственную базу паролей, которая управляется командой smbpasswd.)

Что там написано: первый параметр - это архитектура, для которой задается драйвер, для 2000/XP на x86 это “Windows NT x86″.
Второй параметр, это опции, разделенные двоеточием. Первая опция - имя драйвера (любая строка), дальше 4 опции - имена первых четырех файлов в той выдаче, которую мы получили от винды, затем две опции NULL и RAW, и в конце одной опцией через запятую имена всех файлов, которые были указаны как Dependentfiles все в той же выдаче. Ну и третий параметр - это версия. Для 2000/XP пишем “3″.

Должны получить что-то вроде

Printer Driver HP LaserJet P2015 Series PCL 5e successfully installed.

После этого команда

$ rpcclient localhost -c 'setdriver "<ИмяПринтера>" "<Имя драйвера>"'

Должна нам сказать что-то вроде

Succesfully set Printer1 to driver HP LaserJet P2015 Series PCL 5e.

Единственное место, где про все это написано нормально.




Комментарии

-=ZEDger=-, Tue May 26 09:59:52 2009:
Здраствуйте, чего то не могу понять, как настроить печать на принтер, если она в Винде стоит, расшариный. На других компах стоит Ubuntu, сеть с доменом. Комп с расшариным принтером из под Linux вижу, но не как не могу к самому принтеру подключиться.
Локальный принтер поставил, ОСь сама дрова скачала.
Подскажите.
zedger@bk.ru
KT315, Sun Apr 26 14:16:17 2009:
Запнулся на
rpcclient localhost -N -U'user%psswd' -c 'adddriver "Windows NT x86" "HP Photosmart C4200 series:UNIDRV.DLL:hpoc4203.gpd:UNIDRVUI.DLL:UNIDRV.HLP:NULL:RAW:hpoc420a.ini:hpzst5ha.dll:hpz3c5ha.dll:hpzur5ha.dll:hpoc4203.xml:hpzsc5ha.dtd:hpzui5ha.dll:hpz3r5ha.dll:hpzpr5ha.dll:hpcdmc32.dll:hpbcfgre.dll:hpoc4203.exp:hpzsm5ha.gpd:hpz3m5ha.gpd:hpzev5ha.dll:hpzhl5ha.cab:STDNAMES.GPD:hpz3a5ha.dll:hpzss5ha.dll:hpfie5ha.dll:hpfig5ha.dll:hpfrs5ha.dll:hpfst071.rpo:hpzc35ha.dll:UNIRES.DLL" 3'
result was WERR_UNKNOWN_PRINTER_DRIVER

Any ideas?
Kybernetiker, Thu Sep 11 22:45:07 2008:
Люди добрые, помогите! Пробовал и попроще (как в предыдущих каментах), и посложнее (как в статье) - не печатает, зараза. Через веб-интерфейс CUPS принтер видно со всех машин в сети. "Службы печати для Unix" подключил. Не помогает. После того, как измененил файла smb.conf в соответствии со статьей, получаю следующее в логе самбы:
[2008/09/11 21:27:51, 0] smbd/server.c:main(944)
smbd version 3.0.26a-6.fc8 started.
Copyright Andrew Tridgell and the Samba Team 1992-2007
[2008/09/11 21:27:51, 1] param/loadparm.c:lp_do_parameter(3518)
WARNING: The "printer admin" option is deprecated
[2008/09/11 21:27:51, 0] printing/print_cups.c:cups_connect(69)
Unable to connect to CUPS server localhost:631 - Connection refused
[2008/09/11 21:27:51, 0] printing/print_cups.c:cups_connect(69)
Unable to connect to CUPS server localhost:631 - Connection refused

Принтер подключен к машине, на которой крутится Fedora 8. На другой машине в сети стоит WinXP.
Поможите, чем сможете!
nusgul, Wed Jun 18 11:57:43 2008:
>А вот обратно всё хитрее.<
Да ну! Как правильно написал sergej нужны "Службы печати для Unix", далее подключить принтер, выбираем сетевой - http://имя_машины:631/printers/имя_принтера_в_CUPS, ставим в Вынь нужный драйвер и все работает. Можна создать юзера для печати и в свойствах порта дать юзер/пароль и все...
CUPS можно настраивать через вебинтерфейс, хотя конфиги править ни кто не запрешал;)
Все на много проще чем в статье, дело пяти-десяти минут не более.
sergej, Wed Jun 18 11:36:28 2008:
А можно проще. На машинах под windows через "Установка удаление программ" добавить стандартный компонент Windows - "Службы печяти для Unix ". В Windows при подключении принтера выбрать тип принтера "Локальный" и создать новый порт LPR. Далее указывается IP адресс принтера( если сетевой) либо IP адрес Linux или Windows(должны быть установлены службы печати Unix) машины и имя принтера. Аналогично настраивается печать на Linux машинах для доступа к принтерам установленных на Windows машинах.

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

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds