Мой сайт
Главная | Блог | Регистрация | Вход
Вторник
08.07.2025
06:35
Приветствую Вас Гость | RSS
Главная » 2014 » Апрель » 28 » Ubuntu - сервер печати и сканирования
13:00
Ubuntu - сервер печати и сканирования

Настройка принтера-сканера под Ubuntu Server 12.04

   Живет у меня в кладовке сервер, который круглосуточно раздает торренты и является файлохранилищем, доступным всей семье (у каждого по компьютеру). Все это добро соединено несчастным D-Link роутером.
   Решил накатить новую серверную ОС и настроить под нее all-in-one принтер HP PSC 1315, чтобы можно было сканировать и печатать из любой точки квартиры, покуда хватит витухи или wi-fi. Все проделывается исключительно в моей роутерной локалке, в интернет доступ не даю (хотя бы по тому, что у меня динамический ip, и пока нет резона заморачиваться со всякими no-ip сервисами).
   Итак, имеем на борту свежую и чистую Ubuntu Server 12.04. Вообще, на сервере у меня 2 HDD, у которых тонкая духовная организация. Терабайтник разбит под систему, своп и /home, второй 500гб диск монтируется в /home как "reserv". Папка "torrent" так же лежит в /home, и обе они имеют общий доступ. Не сочтите это за извращение, но так было надо =)
   Как все это работает: принтер расшаривается через samba и печатает с помощью cups, а сканер сканирует с помощью sane и доступ к нему открыт либо через веб-морду scanner server, либо через линуксовский xsane. На винде тоже есть программы, подключающиеся по сети к сканеру, но бесплатных аналогов я не нашел.
   Приступим..
 
 

 Принт-сервер.

Для начала поставим дрова на принтер:
 
sudo apt-get install hplip

   Потом его настроим:
 
sudo hp-setup -i

   Следуем пунктам, и если все делать правильно, то принтер будет определен, о чем программа и сообщит. Порт, к которому подключен принтер - usb. Ставим samba и cups:
 
sudo apt-get install cups samba

   Теперь надо подправить их конфиги. Поискав в сети, и перепробовав различные варианты, мне подошел только один, с этого сайта, как для samba так и для cups. Скажу, что пытался и своими силами их подправить, но в отличие от samba, cups не завелся, поэтому пришлось брать готовое. Привожу их сюда. Не обязательно копипастить в таком виде, можно найти нужные строки и раскоментировать =)

Samba:
sudo cp  /etc/samba/smb.conf /etc/samba/smb.conf.old
sudo nano /etc/samba/smb.conf
 
[global] # Глобальные настройки

netbios name = Lit-Server-P # Имя Машины в сети Windows

workgroup = BUDOVA # Рабочая группа
server string = Printer # Комментарий
wins support = no # Не использовать систему имён от Windows
dns proxy = yes # Пытатся резолвить имена с помощью nslookup
name resolve order = bcast # Каким образом искать имена в сети
domain master = no # Не как Мастер Браузер
local master = no # Не учавтсвовать в выборе Мастер Браузера
map to guest = Bad Password # Любой вход расценивать как Гостя
log file = /var/log/samba/log.%m # Куда писать лог файл
max log size = 1000 # Максимальній размер лог файла
security = share # Политика работы сервера
guest account = printer # Кто в системе является Гостем
printing = cups # Какой демон отвечает за печать
printcap name = cups # Какой демон отвечает за печать
max connections = 0 # Неограниченное число подключений
max open files = 10000 # Максимальное число открытых файлов
max print jobs = 1000 # Максимальное число заданий на принтер
load printers = yes # Показывать принтеры в шарах

[printers] # Принтеры


comment = All Printers # Комментарий
browseable = yes # Видимый в шарах
path = /var/spool/samba # Путь к спуеру
printable = yes # Печатаемый
guest ok = yes # Пускать гостя
read only = yes # Только для чтения
create mask = 0700 # Права доступа
public = yes # Публичный
writable = no # Запись запрещена
use client driver = yes # Использовать драйвера клиента

[print$] Драйвера для подгрузки автоматом


comment = Printer Drivers # Комментарий
path = /var/lib/samba/printers # Где находятся драйвера
browseable = yes # Видимый
read only = yes # Только для чтения
guest ok = yes # Вход гостям разрешён

[drv-printers] # Драйвера для настройки вручную


comment = Drivers For Printer # Комментарий
path = /home/userall/drv # Где находятся драйвера
read only = no # Только для чтения
create mask = 0700 # Права доступа
directory mask = 0700 # Права доступа
guest ok = Yes # Доступ Гостям
browseable = yes # Видимый

[Users-All] # Для разной информации


comment = For All Users # Комментарий
path = /home/userall/usersall # Расположение
browseable = yes # Видимый
read only = no # Только для чтения
create mask = 0700 # Права доступа
directory mask 0700 # Права доступа
guest ok = Yes # Доступ Гостям

Cups:
sudo cp  /etc/cups/cupsd.conf /etc/cups/cupsd.conf.old
sudo nano /etc/cups/cupsd.conf
 
LogLevel warn # Уровень логирования
MaxLogSize 0 # Размер логов
SystemGroup lpadmin # Системная группа
Listen *:631 # Слушать сеть
Browsing On # Видимость
BrowseOrder allow,deny # Политика просмотра
BrowseAllow all # Политика разрешения
BrowseLocalProtocols CUPS dnssd # Протоколы для печати
BrowseAddress @LOCAL # Вещать на все адреса
DefaultAuthType Basic # Тип авторизации по умолчанию

<Location /> # Доступ к службе по HTTP

Order deny,allow # Последовательность политик
Allow From 192.168.1.* # Разрешить с нашей сети доступ
</Location>

<Location /admin> # Доступ к администрированию

Order deny,allow # Последовательность политик
</Location>

<Location /admin/conf> # Доступ к файлу конфигурации

AuthType Default # Тип авторизации по умолчанию
Require user @SYSTEM # Потребовать пользователя системы
Order deny,allow # Последовательность политик
</Location>

<Policy default> # Политики для принтеров

<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document>
Require user @OWNER @SYSTEM # Запросить пользователей
Order deny,allow # Последовательность политик
</Limit>

<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>

AuthType Default # Тип авторизации по умолчанию
Require user @SYSTEM # Запросить пользователя
Order deny,allow # Последовательность политик
</Limit>

<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>

AuthType Default # Тип авторизации по умолчанию
Require user @SYSTEM # Запросить пользователя
Order deny,allow # Последовательность политик
</Limit>

<Limit Cancel-Job CUPS-Authenticate-Job>

Require user @OWNER @SYSTEM # Запросить пользователей
Order deny,allow # Последовательность политик
</Limit>

<Limit All>

Order deny,allow # Последовательность политик
</Limit>
</Policy>

<Policy authenticated> # Политика аутентификации

<Limit Create-Job Print-Job Print-URI>
AuthType Default # Тип авторизации по умолчанию
Order deny,allow # Последовательность политик
</Limit>

<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document>

AuthType Default # Тип авторизации по умолчанию
Require user @OWNER @SYSTEM # Запросить пользователей
Order deny,allow # Последовательность политик
</Limit>

<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>

AuthType Default # Тип авторизации по умолчанию
Require user @SYSTEM # Запросить пользователей
Order deny,allow # Последовательность политик
</Limit>

<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>

AuthType Default # Тип авторизации по умолчанию
Require user @SYSTEM # Запросить пользователя
Order deny,allow # Последовательность политик
</Limit>

<Limit Cancel-Job CUPS-Authenticate-Job>

AuthType Default # Тип авторизации по умолчанию
Require user @OWNER @SYSTEM # Запросить пользователей
Order deny,allow # Последовательность политик
</Limit>

<Limit All>

Order deny,allow # Последовательность политик
</Limit>
</Policy> 
   
   Перезапускаем, для применения настроек:
 
sudo restart cups
sudo restart smbd

   Теперь, чтобы иметь доступ через браузер, надо поставить apache. Решив не заморачивать с его отдельной установкой, я поставил сразу LAMP server, в котором есть и апач, и мускул, и пхп. Так, на всякий случай =)
 
sudo tasksel install lamp-server
 
   Поставили, указали пароль для администратора бд MySQL. Теперь мы имеем доступ к cups через браузер. Заходим на сервер http://server-ip:631
Там все просто и понятно, создаем группу, добавляем свой принтер (в списке был только HP PSC 1310, его я и указал, так как от моего 1315 он ничем не отличается. В дальнейшем он и будет считаться моим принтером)  из списка предложенных, выбираем порт, к которому он подключен. Для проверки можно распечатать тестовую страницу. Если не печатает, то скорей всего проблема с указанием порта (должен быть usb).
    На этом настройка принтсервера закончена. Теперь компьютерам-клиентам надо указать наш принтер. В Ubuntu заходим в "Система -> Администрирование -> Печать", или из консоли system-config-printer. Добавляем, находим по ip сервера, печатаем пробную страницу. В Windows это "Принтеры и факсы", указываем сетевой принтер (можно просто скопипастить ссылку на него из cups), сопоставляем драйвер, и все, готово.
 


Скан-сервер.

   Инструкции я нашел вот на этом сайте, но многое пришлось допиливать самому. Поэтому привожу подробные ходы.
   Устанавливаем утилиты для работы со сканером и изображением:
 
sudo apt-get install sane libsane sane-utils netpbm
 

   Теперь найдем сканер:
 
sudo scanimage -L
 
   Вот что выдало у меня:
 
device `hpaio:/usb/psc_1310_series?serial=HU45OBP05YO2' is a Hewlett-Packard psc_1310_series all-in-one
 
 

   Добавляем нового пользователя для работы со сканером в группу saned:
 
 
 
sudo adduser www-data saned
 
 
 
 
 

   Теперь надо подправить конфиги апача, чтобы можно было запускать cgi скрипты, для работы со сканером из браузера.
 
  
sudo nano /etc/apache2/apache2.conf

   Находим следующую строку и раскоментируем, а если ее нет, то просто добавляем в конец файла.
 
AddHandler cgi-script .cgi
 
Тоже самое проделаем и с этим файлом:
 
sudo nano /etc/apache2/mods-enabled/mime.conf

Редактируем следующий конфиг:
 
sudo nano /etc/apache2/sites-enabled/000-default

   Находим строку Options Indexes FollowSymLinks MultiViews почти в начале файла, и добавляем к ней ExecCGI.
С апаче покончено, можно рестартить:
 
sudo /etc/init.d/apache2 restart
 
 
 

   Теперь будем прикручивать сам веб сервис для сканирования. Официальный сайт разработчика уже давно перестал быть его сайтом, и ссылка в статье стала не актуальна. Порывшись в интернете, я нашел таки этот архив со скриптами, да еще и более новую версию.
   Создаем папку, скачиваем, и распаковываем:
 
cd /var/www
sudo wget http://tmp.mikhe.ru/scan_1.2_Beta1.tar
sudo tar -xvf 'scan_1.2_Beta1.tar'
sudo rm  'scan_1.2_Beta1.tar'
cd /var/www/scan
sudo chmod 777 scans
 

   Последней командой я открыл свободный доступ к папке, где будут лежать сканы. Но мне нужно было чтобы сканы сохранялись в другом месте, в "reserv", о котором упоминалось выше. Чтобы не править скрипты, я просто удалил существующую папку scans, создал в резерве, и указал символьную ссылку.
 
sudo rm -rf scans
sudo mkdir /home/reserv/scans
sudo ln -s /home/reserv/scans /var/www/scan
sudo chmod 777 /var/www/scan/scans
 
 
 
   В принципе можно заходить на сервер через браузер на http://server-ip/scan, и возможно даже принтер сразу определится. Если нет, можно попробовать его найти в разделе "Configure". У меня этого не произошло, поэтому пришлось допиливать sane на сервере, заодно сделал видимым сканер не только для браузера, но и для локального xsane (GUI версия программы сканирования). Плясал я уже с помощью другой статьи.
    Правим конфиг:
 
 
 
 
 
 
sudo nano /etc/init.d/saned

   Находим и правим строки для автоматического запуска демона от созданного ранее пользователя (по умолчанию стоит "no" и "saned"):
 
 
RUN=yes
RUN_AS_USER=www-data

   Те же строки надо вписать в другой конфиг:
 
sudo gedit /etc/default/saned

   Не факт что демон saned будет стартовать автоматически и виден в сети, поэтому устанавливаем сетевой демон xinetd:
 
sudo apt-get install xinetd

   И добавляем в файлик содержание:
 
sudo nano /etc/xinetd.d/saned
 
service sane-port
{
disable = no
socket_type = stream
protocol = tcp
user = www-data
wait = no
server = /usr/sbin/saned
}
 
 
 
 
 

   Теперь впишем пользователей, кто может получить доступ к сканеру не только из браузера. Укажем диапазон ip адресов в конце файла:
 
$sudo nano /etc/sane.d/saned.conf
 
192.168.1.100/150

   Приступим к танцу с бубном =). Как говорится в этой статье, сканер может быть по прежнему недоступен для сети, или все очень криво будет работать и то только от рута. Чтобы этого избежать, и свободно можно было подключаться, надо в sane дописать правило для нашего принтера. Но проблема в том, что моего принтера в списке не обнаружилось, поэтому пришлось создать отдельное. Вот что я делал:
 
sudo sane-find-scanner

   Команда выдала:
found USB scanner (vendor=0x03f0 [hp], product=0x3f11 [psc 1310 series ]) at libusb:002:008

   Итого, у нас принтер 0x3f11 от фирмы 0x03f0. Заходим в конфиг:
 
 
sudo nano /lib/udev/rules.d/40-libsane.rules

   И добавляем строчки для нашего принтера куда-нибудь, где перечисляются другие:
 
# Hewlett-Packard PSC 1315
ATTRS{idVendor}=="0x03f0", ATTRS{idProduct}=="0x3f11", MODE="0664", GROUP="saned", ENV{libsane_matched}="yes"

# Hewlett-Packard PSC 1315
ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="3f11", MODE="0664", GROUP="saned", ENV{libsane_matched}="yes"

   Не знаю, на сколько это правильно, но это работает. Я специально продублировал строчку, указав по разному значение вендора и продукта. Первый вариант то, что показывает sane-find-scanner, а второй, как это записано в 40-libsane.rules.
   Чтобы все вошло в силу, ребутаем на всякий случай сервак:
 
sudo reboot

   После этого принтер стал виден из браузера, а чтобы его увидел xsane на другом локальном компьютере, надо добавить ip сервера в:
 
sudo nano /etc/sane.d/net.conf


   После этого запускаем xsane на клиенте, и радуемся, как он находит сканер, стоящий в кладовке; или хоть с телефона заходим по wi-fi на веб-сервис, и сканируем им =). В общем все, вроде ничего не упустил.

 

http://lexisubuntu.blogspot.ru/2012/06/ubuntu-server-12.html

Просмотров: 1581 | Добавил: Slay | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Календарь
«  Апрель 2014  »
Пн Вт Ср Чт Пт Сб Вс
 123456
78910111213
14151617181920
21222324252627
282930
Архив записей
Наш опрос
Оцените мой сайт
Всего ответов: 8
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Copyright MyCorp © 2025