Общий принтер в локальной сети на Linux

()

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

Итак, исходные данные:

  • Сеть: 192.168.111.0/24.
  • Компьютер с принтером: 192.168.111.150.
  • На всех компьютерах используется Debian/Ubuntu Linux.

Считаем, что cups уже установлен и принтер подключен к соответствующему компьютеру.

Для начала на компьютере, к которому подключен принтер, нужно браузером зайти на адрес http://127.0.0.1:631 (Это веб-интерфейс сервера печати cups (Common Unix Print System)) и настроить принтер. В качестве имени принтера используем «Default_Printer». После этого заходим в свойства принтера и жмём кнопку «Publish Printer». Если её там нет значит принтер уже итак является общим.

Далее открываем в редакторе файл /etc/cups/cupsd.conf и рядом со строкой:

Listen localhost:631

Добавляем строку:

Listen 192.168.111.150:631

И перезапускаем cups:

/etc/init.d/cupsys restart

Теперь cups будет слушать не только localhost, но и локальную сеть. Убедиться в этом можно командой:

netstat -pant|grep cups

Вывод будет выглядеть примерно вот так:

tcp        0      0 192.168.111.150:631     0.0.0.0:*               LISTEN      30994/cupsd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      30994/cupsd

Затем снова открываем в редакторе файл /etc/cups/cupsd.conf и секцию:

# Restrict access to the server...
<Location />
  Order allow,deny
</Location>

Приводим к виду:

# Restrict access to the server...
<Location />
  Order deny,allow
  # Запрещаем доступ всем
  Deny from All
  # Разрешаем доступ самому себе
  Allow from 127.0.0.1
  # Разрешаем доступ локальной сети
  Allow from 192.168.111.0/255.255.255.0
</Location>

Кроме того секцию:

  <Limit All>
    Order deny,allow
  </Limit>

Нужно привести к виду:

  <Limit All>
    Order deny,allow
    Deny from All
    Allow from 127.0.0.1
    Allow from 192.168.111.0.255.255.255.0
  </Limit>

И снова перезапустить cups:

/etc/init.d/cupsys restart

На этом настройке компьютера с подключенным принтером заканчивается. Переходим к настройке остальных компьютеров. Здесь настройка много проще: достаточно привести файл /etc/cups/printer.conf к виду:

<Printer Main_Printer>
  Info
  Location
  # Здесь нужно указать правильный IP-адрес компьютера с принтером и имя принтера
  DeviceURI ipp://192.168.111.150/printers/Default_Printer
  State Idle
  StateTime 1220950496
  Accepting Yes
  Shared Yes
  JobSheets none none
  QuotaPeriod 0
  PageLimit 0
  KLimit 0
  OpPolicy default
  ErrorPolicy stop-printer
</Printer>

И перезапустить cups.

Всё! Можно пользоваться.

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

Приятной работы!

Ключевые слова: cups, принтер.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

Комментарии:

EvgenT 2008-09-09 15:55:07 (#)

Всё то оно так, но....
Listen 192.168.111.150:631
Привязано к IP. А если завтра IP поменяется, то надо по всем службам проверять, где это мы прописали IP???
Возможно лучшим выходом будет:
Listen *:631

MooSE 2008-09-09 16:43:05 (#)

Я не очень внимательно читал ман по конфигу. Есть подозрение что надо написать:
Listen 0.0.0.0:631

Но вроде как и так не плохо работает:)

mmm62 2008-09-27 11:41:47 (#)

- в боевых условиях ErrorPolicy stop-printer не подходит.
лучше ErrorPolicy abort-job. если есть желание постоянно принтер ручками в cups включать, то можно ErrorPolicy stop-printer оставить.


вместо возни с printer.conf, на клиентах, проще прописать
в /etc/cups/client.conf
===========
servername 192.168.xx.xx
===========
и всё...

vitus 2008-09-29 16:40:18 (#)

Спасибо за статью!
Долго не мог найти свою ошибку - что в listen надо указать адрес своего же компа, к которому присоединён принтер, т.е. то же, что и localhost, только другими словами... Также cups не хотел корректно перезапускаться, пока не убрал в IP-адресах маску подсети.
Зато теперь сестре не нужно таскать мой C4283 в свою комнату!

Oper.kh 2010-08-18 23:08:32 (#)

Советую заменить код:
# Restrict access to the server...
<Location />
  Order deny,allow
  # Запрещаем доступ всем
  [B]Deny from All[/B]
  # Разрешаем доступ самому себе
  Allow from 127.0.0.1
  # Разрешаем доступ локальной сети
  Allow from 192.168.111.0/255.255.255.0
</Location>

На код:
# Restrict access to the server...
<Location />
  Order deny,allow
  # Запрещаем доступ всем
  [B]Deny from 0.0.0.0/0[/B]
  # Разрешаем доступ самому себе
  Allow from 127.0.0.1
  # Разрешаем доступ локальной сети
  Allow from 192.168.111.0/255.255.255.0
</Location>

Иначе в Debian Squeeze в веб морде выдаёт "403 Запрещено"

MooSE 2010-08-18 23:09:42 (#)

В чём разница?

Oper.kh 2010-08-18 23:11:19 (#)

выделил жирным, шрифтом не видно

"Deny from All" и "Deny from 0.0.0.0/0"

MooSE 2010-08-19 11:58:35 (#)

Я это понял. Я спрашиваю чем "All" отличается от "0/0"?

Вроде как "All" и есть "0/0". Или я что-то упустил?

Oper.kh 2010-08-19 14:08:53 (#)

Когда стояло All, то веб выдавал сообщение: "403 Запрещено", а когда я поставил 0.0.0.0/0, то веб заработал.

MooSE 2010-08-19 17:57:26 (#)

очень странно. у меня итак работало:)

Oper.kh 2010-08-19 18:25:45 (#)

На squeeze работало? Просто в squeeze очень много косяков мелких встречается.

MooSE 2010-08-20 08:54:51 (#)

это работало на kubuntu 8.04 и 8.10. а дальше я не проверял...

Anonymous 2010-11-10 22:11:32 (#)

Советую заменить код:
# Restrict access to the server...
<Location />
  Order deny,allow
  # Запрещаем доступ всем
  [B]Deny from All[/B]
  # Разрешаем доступ самому себе
  Allow from 127.0.0.1
  # Разрешаем доступ локальной сети
  Allow from 192.168.111.0/255.255.255.0
</Location>

На код:
# Restrict access to the server...
<Location />
  Order deny,allow
  # Запрещаем доступ всем
  [B]Deny from 0.0.0.0/0[/B]
  # Разрешаем доступ самому себе
  Allow from 127.0.0.1
  # Разрешаем доступ локальной сети
  Allow from 192.168.111.0/255.255.255.0
</Location>

Иначе в Debian Squeeze в веб морде выдаёт "403 Запрещено"


Большое спасибо! Уже полтора часа убил из-за этой непонятной ошибки.

P.S. Ubuntu Server 10.04
Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2024 Вадим Калинников aka MooSE
Политика конфиденциальности