CUPS. Разделение печати.

By Igor

В этом посте я напишу свой личный опыт разделения печати своего принтера HP LaserJet 1000, который подключён к Gentoo, ArchLinux, Slackware. Конечно, всё уже написано бесчисленное количество раз, однако личный опыт иногда ценнее многочисленных wiki.

Настройку принтера я рассматривать не буду, так как она в последнее время стала дистрибутиво-зависима, да и очень сильно зависит от принтера. Рекомендую посетить сайт дистрибутива (форум, вики) и http://www.linuxprinting.org – сайт, посвящённый печати в linux-системах.

Итак, есть принтер, который отлично работает, когда подключён к локальному компьютеру, теперь хочется сделать его доступным для печати через сеть. Рассмотрим два варианта: печатать хотим с win- или linux- машины.

с Linux-машины
Итак, есть сервер, у него IP 192.168.2.1 для одной машины и 192.168.1.2 для другой (да, такая у меня дома сеть дурацкая =))). Для разрешения печати клиентами необходимо изменить файл /etc/cups/cupsd.conf на сервере:

<Location />
Order allow,deny
Allow @LOCAL
</Location>

Теперь необходимо перезапустить cups на сервере.

Переходим к настройке клиента. Здесь достаточно изменить одну строчку: в файле /etc/cups/client.conf надо ввести имя сервера (или его IP):
ServerName 192.168.2.1 на одном клиенте и ServerName 192.168.1.2 на другом. Если в файле /etc/hosts сервер есть, то можно написать его имя (в таком случае конфигурация клиентов будет одинаковой). Перезапускать cups не обязательно. Теперь можно попробовать распечатать тестовую страницу. Кстати, при посещении http://localhost:631 на клиенте должен отобразиться принтер.

с Windows-машины
Этот способ не использует Samba (зачем, если нужен только сервер печати?!), но зато ограничивает используемые версии Windows (правда, я не уверен, что кто-то всерьёз использует ещё Windows 98/95 и более древние).
Предположим, что у нас есть Windows XP (или 2000, но я пробовал только на XP). Отредактируем настройки сервера, как указано выше. Теперь сервер настроен, осталось лишь разобраться с win-машиной :). Добавляем принтер через панель управления. Выбираем «Сетевой принтер или принтер, подключённый к другому компьютеру». Жмём на «Далее». Теперь в поле имени компьютера вводим http://192.168.2.1:631/printers/HP1000, где 192.168.2.1 – это IP сервера, а HP1000 – это имя принтера, заданное на сервере печати при его установке.

Useful:
на клиенте надо-таки указать сервер. При добавлении нового принтера указать ipp://SERVER_HOSTNAME:631/printers/PRINTER_NAME

11 коммент. на “CUPS. Разделение печати.”

  1. virens:

    Если честно, из поста не очень понятно, как добавить на стороне клиента удалённый принтер. Есть машина 192.168.1.5, с которого хочется печатать на принтер HPLaserJet5L (его имя в CUPS) на машине 192.168.1.1. Ну, сервер я настроил, ладно. А клиент!?

  2. Igor:

    «достаточно изменить одну строчку: в файле /etc/cups/client.conf надо ввести имя сервера (или его IP):»
    ServerName 192.168.1.1 – в этом случае.
    и всё…

  3. virens:

    ААааа!!!! Чукча я чукча :) Это ж /etc/cups/clients! Всё, есть контакт! Пошла печать.
    Вот это для меня и было загадкой – как принтеры добавлять? Ан они сами добавились…
    Ещё раз спасибо.

  4. Igor:

    Ага, сами добавляются :) Здорово, что получилось!

  5. ram32:

    спасибо за пост, сам собираюсь скоро принтер брать :)

  6. Igor:

    В новой версии CUPS (последняя доступная из репозитория ArchLinux, 1.2.7) файла client.conf не оказалось, а принтер печатал и без него, то есть получается, что клиент надо настроить только на видимость сервера.

  7. Lev:

    А если нужно печатать на несколько сетевых принтеров? Если я пишу вторую строку serverName – показывается только принтеры на первом сервере.

  8. Igor:

    читайте предыдущий комментарий…

  9. Igor:

    Недавно опробовал Windows Vista. Настройка принтера работает точно так же, как и для Windows XP. Единственная проблема может возникнуть в связи с отсутствием драйверов для Vista.
    Для моего принтера HP LaserJet 1000 драйвера отсутствуют, но скачав пак для Windows XP и распаковав его, а затем указав файл .inf для принтера, завести его удалось, а тестовая страница была успешно напечатана.

  10. Ivan:

    У меня что то не работает..

    /etc/cups/cupsd.conf, поправил вот это:

    Listen *:631

    Order allow,deny
    Allow @LOCAL
    </Location

    Вот, вроде оно есть:

    $ nmap 192.168.1.2

    Starting Nmap 4.20 ( http://insecure.org ) at 2008-03-15 22:29 MSK
    Interesting ports on feddy.edu.org (192.168.1.2):
    Not shown: 1694 closed ports
    PORT STATE SERVICE
    22/tcp open ssh
    631/tcp open ipp
    6000/tcp open X11

    С сервера печатаю, на сервер захожу, администрирую через веб-морду:
    https://192.168.1.2:631/
    или так:
    https://feddy:631/

    Теперь на локальной машине:

    $ cat /etc/cups/client.conf
    ServerName 192.168.1.2

    Смотрю, появились ли новые принтеры:
    http://localhost:631/admin

    # CANON (Parallel Port #1)
    # Add This Printer EPSON (Parallel Port #1)

    Только вот это.. но мне это не нужно.

    Пробую добавить принтер на локальной машине, указываю ей URI:
    http://192.168.1.2:631/printers/xerox

    Вот сообщение об ошибке:
    xerox «/usr/lib/cups/backend/http failed»

    Так же как и в Виндоус. Кст, в Виндоус произошло шевеление.. но печать так и не пошла.

    Может быть пробемы в доступе к файлу в каталоге /dev/ на сервере?
    Но это уж совсем параноя..

    Вот, делаю на сервере:

    # ls -l /dev/lp0*
    crw-rw—- 1 root lp 6, 0 2008-03-15 19:29 /dev/lp0

    Ну да, правильно, параллельный порт, к которому подключён принтер, доступен для записи только для рута и группы его. Но на сервере то печатаю, находясь под пользователем..

    Вот, смотрю на сервере , к которому принтер подцеплен:
    cat /etc/group | grep -i lp
    lp::7:daemon

    Может users добавить?

    Вобщем я что то запутался..

  11. Wintch:

    Хаха Иван ты супер!

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