Предистория — в офисе работа организована следующим образом — на рабочих станциях установлена Ubuntu, и они используя rdesktop подключаются к серверу терминалов, под управлением Windows Server 2003 R2 x63.Довольно типично.Так вот, вопрос публикации принтеров возник в самом начале поднятия офиса.Сначала ӕто было реализовано через Cups по протоколу ipp.Данный способ был прост в реализации, но повел за собой немалое количество глюков, и из за ӕтого хотелось сделать красивее и безглючнее.Да и к тому же имена принтеров расшаренных по ipp не отличались красивостью.Другими словами — путались в них пользователи)).Путем гуглежа и раздумий было решено публиковать принтеры, подключенные к линукс-машинам, средствами демона lp_server
Вот что написано о программе в README файле, идущем вместе с иходниками

README for lp_server
This program allows you to 'export' a printer on your local host
to be used by an LPRng spooler. It is basically simulating an
HP JetDirect interface, which opens a connection on port 9100
and simply dumps input to the PostScript Engine
.

По русски — ӕкспортировать принтер на машине, на tcp-порт 9100, ӕмулируя работу JetDirect

Приступим:
Часть первая — Настройка на стороне Linux Ubuntu 8.10

1)Качаем исходники.
2)Распаковываем - tar -xvvf lp_server-1.1.6.tar
3)Переходим в папку с исходниками — cd ./lp_server-1.1.6
4)Конфигурируем — ./configure
5)Собираем — make

В папке src появится исполняемый файл lp_server, его копируем, например в /sbin/lp_server

Программа установлена.Теперь нужно прицепить еэ к нашему принтеру.У меня был принтер Hewlett-Packard LaserJet 1022.
В Ubuntu, я определил имя устройства, к которому подключен принтер, и к которому будем подключать lp_server так:

Запустил dmesg | tail
Воткнул шнур принтера в usb
Оказалось что устройство — usblp0
итак команда, достаточная для работы lp_server такая
lp_server -d /dev/usblp0 -n 9100 -D 9, где
-d — устройство к которому цепляемся.
-n — порт на который вешаем демона.
-D 9 — уровень отладки(для тестов, потом уберем)
итак, в консоли видим примерно такое

lp_server pid [7521] port 9100 at Jan 30 14:06:39
lp_server pid [7521] socket 3 at Jan 30 14:06:39
lp_server pid [7521] waiting at Jan 30 14:06:39


Ок.Демон работает и ждет данных на порт 9100.Чтож нужно ему их дать.

Часть вторая — настройка клиентов Windows.
1)Открываем «Пуск-Панель Управления-Принтеры и Факсы---->Установка принтера---->Локальный принтер---->Создать новый порт---->Standard TCP/IP порт---->Далее----->В поле имя принтера или ip-адрес, вводим ip-адрес компьютера с Ubuntu---->Тип Устройства-Generic Network Card---->Готово---->Ставим драйвер для своего принтера.»Вуаля.Теперь должно печатать.

И последний вопрос — автозагрузка демона.
Тут я сделал по простому — может гуру меня поправят и напишут стартовый скрипт и т.д.

Создал я такой скрипт стартовый скрипт

cat /etc/init.d/lp_server
/sbin/lp_server -d /dev/usblp0 -n 9100 > /dev/null 2> /dev/null &


И добавил его в автозагрузку…
sudo update-rc.d lp_server start 10 2 3 4 5 . stop 10 0 1 6 .