Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Принт-Сервер Samba+LPD & AD

Установка Принт-Сервера Samba+LPD & AD

Автор: Cancer.


На днях возникла задача купить или настроить принт сервер для Склада, подумав немного решили настраивать на FreeBSD, так как на Складе полным полно слабеньких машин, а  в стране "Крысзис" и Принт серверы стоят от 2600 рублей.
Так что зачем тратить деньги если можно настроить все на стареньких компах и совершенно бесплатно =).


Исходные данные:
OS:       FreeBSD 6.4
CPU:      Intel(R) Celeron(TM) CPU 1100MHz
HDD:      10 Gb
DIMM:     64 Mb
Ethernet: 10 Mb (10baseT/UTP)
Принтер:  HewLett Packard HP LaserJet 1200 (Подключен по USB 1.0)
=================================================================
Контроллер домена под управлением Windows Server 2003






Устанавливаем SAMBA 3.0.34,1

//> cd /usr/ports/net/samba3
/usr/ports/net/samba3/> make config

     +--------------------------------------------------------------------+
     |                   Options for samba 3.0.34,1                       |
     | +----------------------------------------------------------------+ |
     | |  [X] LDAP         With LDAP support                            | |
     | |  [X] ADS          With Active Directory support                | |
     | |  [ ] CUPS         With CUPS printing support                   | |
     | |  [X] WINBIND      With WinBIND support                         | |
     | |  [ ] ACL_SUPPORT  With ACL support                             | |
     | |  [ ] AIO_SUPPORT  With Asyncronous IO support                  | |
     | |  [ ] FAM_SUPPORT  With File Alteration Monitor                 | |
     | |  [X] SYSLOG       With Syslog support                          | |
     | |  [ ] QUOTAS       With Disk quota support                      | |
     | |  [X] UTMP         With UTMP accounting support                 | |
     | |  [ ] PAM_SMBPASS  With PAM authentication vs passdb backends   | |
     | |  [ ] CLUSTER      With experimental cluster support            | |
     | |  [ ] DNSUPDATE    With dynamic DNS update(require ADS)         | |
     | |  [ ] EXP_MODULES  With experimental modules                    | |
     | |  [X] POPT         With system-wide POPT library                | |
     | |  [X] PCH          With precompiled headers optimization        | |
     | |  [ ] MAX_DEBUG    With maximum debugging                       | |
     | |  [ ] SMBTORTURE   With smbtorture                              | |
     | |                                                                | |
     | |                                                                | |
     +-+------v(+)------------------------------------------------------+-+
     |                       [  OK  ]       Cancel                        |
     +--------------------------------------------------------------------+

//> make && make install && make clean
//> rehash


Правим файл /etc/hosts
//> cat /etc/hosts

::1                     localhost.domain.local localhost
127.0.0.1               localhost.domain.local localhost
# Принт-сервер
192.168.55.200         printsrv.domain.local     printsrv
192.168.55.200         printsrv.domain.local.
# Контроллер домена на Windows 2003 он же DNS и DHCP
192.168.55.1           server.domain.local   server


Правим файл /etc/resolv.conf
//> cat /etc/resolv.conf
# Мой домен
domain  domain.local
# Указываем DNS сервер
nameserver      192.168.55.1



Правим конфиг самбы до такого состояния
//> ee /usr/local/etc/smb.conf

#======================= Global Settings =====================================
[global]

   workgroup = DOMAIN
   server string = Принт Сервер
   security = ADS
   hosts allow = 192.168.55. 192.168.1. 127.
   load printers = yes
   printcap name = /etc/printcap
   printing = bsd
   print command = lpr -P %p  %s -r
   log file = /var/log/samba/log.%m
   max log size = 50
   password server = 192.168.55.1
   realm = DOMAIN.LOCAL
   dns proxy = no
   display charset = koi8-r
   unix charset = koi8-r
   dos charset = cp866
   winbind use default domain = yes
   winbind uid = 10000-15000
   winbind gid = 10000-15000
   winbind enum users = yes
   winbind enum groups = yes


#============================ Share Definitions ==============================
[homes]
   comment = Home Directories
   browseable = no
   writable = yes

[printers]
   comment = Склад99 HP-1200
   printer = hp
   read only = no
   browseable = yes
   printable = yes
   path = /var/spool/samba
   public = yes




Настраиваем Керберос

Heimdal керберос нужен для того что бы наша Система поучила ключ от Win2003 Server
Для дальнейшего подключения к ДОМЕНУ

Создаем конфиг Heimdal /etc/krb5.conf
//> ee /etc/krb5.conf

[libdefaults]
        default_realm = DOMAIN.LOCAL
        clockskew = 300
        v4_instance_resolve = false
        v4_name_convert = {
                host = {
                        rcmd = host
                        ftp = ftp
                }
                plain = {
                        something = something-else
                }
        }

[realms]
        DOMAIN.LOCAL = {
                kdc = 192.168.55.1
                admin_server = 192.168.55.1
                kpasswd_server = 192.168.55.1

        }
[domain_realm]
        .domain.local = DOMAIN.LOCAL



Правим файл /etc/nsswitch.conf
//> cat /etc/nsswitch.conf

group: files winbind
group_compat: nis
hosts: files dns
networks: files
passwd: files winbind
passwd_compat: nis
shells: files


Получаем билет
//> kinit -p admin
admin@DOMAIN.LOCAL's Password:
kinit: NOTICE: ticket renewable lifetime is 1 week
//>



Проверяем получили мы ticket
//> klist
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: admin@DOMAIN.LOCAL

  Issued           Expires        Principal
Nov 20 16:16:33  >>>Expired<<<  krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
//>


Подключаемся к ДОМЕНУ
//> net ads join -U admin
admin's password:
Using short domain name -- DOMAIN
Joined 'PRINTSRV' to realm 'DOMAIN.LOCAL'
//>



Добавляем SAMBA в автозагрузку
//> echo 'samba_enable="YES"' >> /etc/rc.conf

Ну и запускаем SAMBA
//> /usr/local/etc/rc.d/samba start
Performing sanity check on Samba configuration: OK
Stopping winbindd.
Stopping smbd.
Stopping nmbd.
Removing stale Samba tdb files: ........ done
Starting nmbd.
Starting smbd.
Starting winbindd.
//> 


Проверяем видит ли Samba группы, пользователей домена
//> wbinfo -g

пользователи домена
контроллеры домена
гости домена
компьютеры домена
администраторы домена
бухгалтерия
сотрудники отдела ит


.....итд итп.....


//> wbinfo -u

администратор
гость
user1
user2
user3
user4
user5

........итд итп........


//> id petrov
uid=10001(petrov) gid=10000(пользователи домена) groups=10000(пользователи домена),
10007(администраторы домена), 10039(сотрудники отдела ит)
//>



Настройка Принтера



Смотрим на каком интерфейсе висит принтер
//> dmesg | grep LaserJet
ulpt0: HewLett Packard HP LaserJet 1200, rev 1.10/1.00, addr 2, iclass 7/1
//>

И висит оказывается на ulpt0



Далее правим файл /etc/printcap
//> ee /etc/printcap

#       @(#)printcap    5.3 (Berkeley) 6/30/90
# $FreeBSD: src/etc/printcap,v 1.14.24.1 2008/10/02 02:57:24 kensmith Exp $

hp-1200|hp-1200|lp:\
                :sh:sd=/var/spool/lpd:\
                :lp=/dev/ulpt0:\
                :if=/usr/local/libexec/hpif:



Если у вас принтер весит по LPT то в printcap указываем lpt0 или какой там интерфейс задействован.




Далее рисуем такой скрипт
//> ee /usr/local/libexec/hpif

#!/bin/sh

printf "\033&k2G" && cat && exit 0
exit 2


И даем на скрипт права на выполнение
//> chmod +x /usr/local/libexec/hpif



Запуск системы LPD

Далее добавляем в автозагрузку lpd
//> echo 'lpd_enable="YES"' >> /etc/rc.conf

И запускаем демон
//> /etc/rc.d/lpd start
Starting lpd.
//>



Проверка печати

Можно проверить теперь работу принтера прям из консоли набрав такую команду
//> lptest 20 5 | lpr -Pprinter-name

Где printer-name — имя принтера, заданное в файле /etc/printcap
И принтер должен распечатать вот такую фигню =)
!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678



Проверка печати из Windows

Переходим по \\192.168.55.200 через Проводник и попадаем на Print_Server


Далее устанавливаем принтер указав винде виндовые дрова (которые должны быть у вас)
и пробуем печатать документы, итд итп. Т.е тестируем его.



Просмотр истории печати

Даже можно потом посмотреть что и когда было отправлено на печать
//> ls -l /var/spool/samba
total 1696
-rw-------  1 cancer         wheel   64656 10 мар 14:25 smbprn.00000001.sSsMOp
-rw-------  1 cancer         wheel   33191 10 мар 14:26 smbprn.00000002.sSsMOp
-rw-------  1 cancer         wheel   33191 10 мар 14:26 smbprn.00000003.egVcuh
-rw-------  1 cancer         wheel   65022 10 мар 16:26 smbprn.00000009.w8CPOQ
-rw-------  1 sklad99        wheel   33782 10 мар 14:15 smbprn.00000010.4vxbM4
-rw-------  1 администратор  wheel   75010 10 мар 09:39 smbprn.00000022.Ncp5eH
-rw-------  1 администратор  wheel  113137 10 мар 09:43 smbprn.00000024.1MSZe0
-rw-------  1 cancer         wheel   65715 10 мар 10:21 smbprn.00000025.hYve8x
-rw-------  1 cancer         wheel  140420 10 мар 10:48 smbprn.00000026.Pn9AJr
-rw-------  1 cancer         wheel  141355 10 мар 10:49 smbprn.00000027.9yBXns
-rw-------  1 sklad99        wheel   48457 10 мар 16:38 smbprn.00000029.3WyMn8
-rw-------  1 sklad99        wheel   43534 10 мар 16:46 smbprn.00000031.3WyMn8
//>

Куча примеров скриптов для разных принтеров тут /usr/share/examples/printing/
Например для HP-1300 такой hpif
#!/bin/sh

printf "\033&k2G" && cat && printf "\f" && exit 0
exit 2









P.S Пробовал положить дрова на сервак (для того что бы дрова ставились прям с сервака), но как то не получилось, если кому удалось это сделать просьба отписаться. =)




Документация:
http://freebsd.org.ua/doc/ru_RU.KOI8-R/books/handbook/
http://www.freebsd.org.ru/how-to/printerconfig.html



размещено: 2009-03-16,
последнее обновление: 2009-07-29,
автор: Cancer


komander, 2009-03-17 в 1:15:59

Дрова на сервер кладутся как то так:
1) /usr/local/etc/smb.conf
[print$]
  comment = Printer Drivers
  path = /home/SAMBA/print$
  browseable = yes
  guest ok = no
  writeable = no
  write list = root, @it
  create mask = 0664
  directory mask = 0775
2) mkdir -p '/home/SAMBA/print$' '/home/SAMBA/print$/color' '/home/SAMBA/print$/w32x86'
3) собственно в папке w32x86 лежат драйвера
У меня так:
admfs# pwd
/usr/home/SAMBA/print$
admfs# ls -l w32x86
total 2
drwxrwxr-x  2 komander  it  512 Dec 22  2007 3
admfs# ls -l w32x86/3
total 10676
-rw-rw-r—  1 komander  it      164 Jul 24  2006 hpc3050d.ini
-rw-rw-r—  1 komander  it    53218 Jul 25  2006 hpc3050s.ppd
-rw-rw-r—  1 komander  it     9191 Jul 24  2006 hpc3050s.xml
-rw-rw-r—  1 komander  it   663624 Apr 28  2006 hpcdmc32.dll
-rw-rw-r—  1 komander  it    39789 Feb 26  2004 hplj1xxx.exp
-rw-rw-r—  1 komander  it   695808 Jul 24  2006 hpzev4ay.dll
-rw-rw-r—  1 komander  it    52344 Jul 24  2006 hpzfn4ay.ntf
-rw-rw-r—  1 komander  it   923676 Jul 21  2006 hpzhl4ay.cab
-rw-rw-r—  1 komander  it  1220608 Jul 24  2006 hpzls4ay.dll
-rw-rw-r—  1 komander  it     3822 Jul 24  2006 hpzsc4ay.dtd
-rw-rw-r—  1 komander  it    97792 Jul 24  2006 hpzsr4ay.dll
-rw-rw-r—  1 komander  it   559104 Jul 24  2006 hpzss4ay.dll
-rw-rw-r—  1 komander  it  3004928 Jul 24  2006 hpzst4ay.dll
-rw-rw-r—  1 komander  it  1953792 Jul 24  2006 hpzui4ay.dll
-rw-rw-r—  1 komander  it   133120 Aug  4  2004 ps5ui.dll
-rw-rw-r—  1 komander  it    16463 Jun 16  2003 pscript.hlp
-rw-rw-r—  1 komander  it   792644 Mar 28  2003 pscript.ntf
-rw-rw-r—  1 komander  it   464384 Aug  4  2004 pscript5.dll

P.S. вообще папка w32x86 не единственная, для каждой архитетктуры-клиента создается своя папка (подробнее кажется где то на samba.org было)

GR, 2009-03-17 в 22:28:23

Я просто в виртуальной машинке на винду ставил принтеры - по очереди, смотрел как оно раскладывается и копировал в юникс :)

Насчет Kerbros Heimdal - не надо его ставить. Во Фре начиная с шестёрки встроенный и есть Heimdal :)

Cancer, 2009-03-17 в 22:30:20

GR
А подробнее? на счет драйверов

Mavka, 2009-03-30 в 9:43:47

Samba. Chapter 21. Classical Printing Support:
http://us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/classicalprinting.html#id2620623

sys, 2009-03-30 в 16:49:06

Почему никто не думает что одна машина а качестве принтсервера слопает за год электричества на сумму в два раза больше стоимости принтсервера - принтер за эти деньги можно купить :)  

lissyara, 2009-03-30 в 16:52:41

Например, VIA C7 - которая при полной нагрузке меньше ватта жрёт? =)
====================
не обязательно же выделенная машина.
Есть ещё ситуации, когда мне надо свести в одной точки сотню принтеров - просто чтоб клиенты не ДДОСили принтер, а организованно выстроились в очередь.

sys, 2009-03-30 в 16:58:06

Процессор via от 5 ват во сне, но суть в первом абзаце. Так нам кризис не побороть.

lissyara, 2009-03-30 в 17:17:03

Ну хорошо.
Считаем. сколько жрёт этот тазик?
проц - ватт 20, хард стока же. Округлим - 50.
Путь его не выключают - поставили и забыли.
квт/ч * часов * дней * цена
0,05 * 24 * 365 * 2.50 = 1095 рублей за год.
Сдаётся мне, что с вами мы точно кризис не победим =))

Товарищ пИнгвин, 2009-03-30 в 17:31:27

>sys

А сам принтсервер разве электричество не жрёт ? Склоняюсь к тому, что Ваша "экономия на электричестве" не оправдает себя.

Cancer, 2009-03-30 в 17:39:20

Ну смотрите у меня там в Биосе есть включение по времени. Включается он в 8:00 выключается скриптом в 17:00 так что электричества будет в разы меньше хавать, единственный недостаток что включаться он будет в суб и в воскр, но и это я предусмотрел, сделал на суб воскр скрипт выключения в 8:10.
Ну и то я понимаю что это не очень экономно, ну а что делать если не выделяют денег на покупку принт-сервера.

sys, 2009-03-30 в 17:40:03

Принтсервер >5 ватт, Его не хватит даже для того что бы счетчик раскрутить :)
А комп в той конфигурации по расчету на http://www.energy.kiev.ua/ru/catalog/ups/calc2/intel_calculator/ тянет на 150 ватт в пике. Это без учета БП. Рассчитать в покое нее представляется возможным, только замеры.

sys, 2009-03-30 в 17:41:28

Что не говорите но это забивание гвоздей микроскопом :)

lissyara, 2009-03-30 в 17:57:41

Даже при таком расчёте - 150 ватт (проц пашет на полную, диск молотит на полную, видяху зачем-то джифорс запихали вместо встроенной или завлящей ISA которая жрёт милиамеры - и так весь рабочий день) - получается всё те же 1095 рублей в год.
Потому как пашет оно у него 8 часов в сутки. В выходные - 10 минут, значит ещё меньше.

Идиотизм предположения что всё железо молотит на полную все 8 часов - объяснять не надо?

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

Cancer, 2009-03-30 в 17:59:52

Если по расчетам хавать будет 145 Вт, так что нужно будет подумать и преподнести начальству на блюдце.

Sergey, 2009-03-31 в 11:34:57

Тоже самое но на SysLinuxe.
Готовый образ собранный http://www.thinstation.org/TSoM/ ставиться за 10 минут. Работает на пне втором с 24м на борту.

SergeySL, 2009-05-30 в 15:53:27

P.S Пробовал положить дрова на сервак (для того что бы дрова ставились прям с сервака), но как то не получилось, если кому удалось это сделать просьба отписаться. =)
Выложил инструкцию по выкладыванию драйверов принтеров на сервер. Пожалуйста пишите, у кого что получилось и не получилось.

dimasus, 2009-07-21 в 15:24:47

Я на OpenBsd поднимал принт-сервер, работает на пне первом с 16М оперативы. Правда не через самбу+лпд а через cups.

Alexey, 2009-09-30 в 15:00:27

Имеется:
Принтер HewLett Packard HP LaserJet 1000 (Подключен по USB) и Контроллер домена под управлением Windows Server 2003 sr1

Установил на свободную машину FreeBSD 6.4.
Установил порты.
Далее делал все по инструкции....
Дошел до: lptest 20 5 | lpr -Php-1000
а в ответ тишина..............
Думаю, ладно, попробую через windows, так меня даже на принт-сервер не пускает.

станислав, 2009-12-17 в 7:19:59

а он и не должен печатать по предложенной схеме установки.

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



Ivan_83, 2010-06-27 в 10:54:30

Делать медиаконвертер (=принтсервер) из писюка то ещё удовольствие и выгоды в этом почти никакой нет.

А вот сделать принтсервер (=спулер печати) на всю сеть, который будет всеми принтерами управлять по сети, у себя через вебморду выдавать статус принтеров, очереди.
И самый идеальный вариант, когда клиенты вообще знать не будут что у них за принтер, а сервер печати сам будет подгонять задание под конкретный принтер. Тогда можно будет просто перетыкать любой принтер, даже если он совершенно другой марки/серии.

KaMa-CyTpA, 2010-06-28 в 12:49:31

Не, с принт-сервером сравнивать НЕЛЬЗЯ.
К такого рода принт-серверу, который описан тут я могу подключить столько принтеров, сколько смогу USB натыкать.
А стандартный принт-сервер _ОГРАНИЧЕН_
Так что считать тут затраты на ЭЭ - моветон.

Ivan_83, 2010-06-28 в 14:03:10

Не вижу смысла ставить 10 принтеров рядом!
Даже 4 портовые принтсервера длинка врядли слишком востребованы либо мало кто использует сразу все порты.

Фича апаратного принтсервера - его размеры, потребление, цена.
Фича компового - спулер, фильтры, статистика, доступ, гибгость настройки, удобство администрирования.

Одно другое не заменяет.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.056 секунд
Из них PHP: 45%; SQL: 55%; Число SQL-запросов: 78 шт.
Исходный размер: 65194; Сжатая: 13843