Книга: Linux-сервер своими руками

9.5. Доступ к Windows-принтеру с компьютеров, работающих под Linux

9.5. Доступ к Windows-принтеру с компьютеров, работающих под Linux

Прежде всего, вам нужно создать правильные записи в файле /etc/printcap. С форматом этого файла вы можете ознакомиться в листинге 9.7.

Листинг 9.7. Файл printcap

#  /etc/printcap
#
#  //nt_wsl/hp5m via smbprint
#
lp:
# просто комментарий
 :cm=HP 5MP Postscript hp5m on nt_wsl:
# имя устройства, открываемого для вывода
 :lp=/dev/lp0:
# директория спула принтера (на локальной машине)
 :sd=/var/spool/lpd/lp:
# файл учета использования принтера
 :af=/var/spool/lpd/lp/acct:
#  максимальный размер файла.
#  Если указано, значение «ноль», то ограничение снимается
 :mx#0:
# имя фильтра
 :if=/usr/bin/smbprint:

В листинге 9.7 приведено (в комментариях) описание полей файла printcap, но, я думаю, не помешает отдельно привести их перечень:

cm — задает комментарий;

lp —  имя устройства, открываемого для вывода;

sd — директория спула принтера на локальной машине;

af — файл учета использования принтера;

mx — максимальный размер файла. Если указано значение «ноль», то ограничение снимается;

if — имя входного фильтра.

Возвращаясь к настройке доступа, убедитесь, что каталог для спула принтера существует и разрешен для записи. Также нужно указать существующее устройство для вывода. В листинге 9.7 этим устройством является /dev/lp0. В пакет Samba входит сценарий smbprint. С помощью этого сценария можно распечатывать документы на сетевом принтере, используя сервисы SMB. Возможно, в состав вашего пакета он не входит, поэтому я воссоздал его в листинге 9.8. Этот листинг частично позаимствован из руководства по пакету Samba.

Листинг 9.8. Сценарий smbprint

#!/bin/sh –x
# (с) Andrew Tridgell
# Этот скрипт является фильтром для системы печати, использующей
# файл /etc/printcap
# Он использует программу smbclient для печати файла на сетевом
# принтере, который подключен к рабочей станции Windows.
#
# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
#
# Запись создает unix-принтер, названный "smb", который будет
# печатать с помощью этого скрипта. Вам необходимо создать директорию
# спула /usr/spool/smb с соответствующими правами и владельцем
# Установите здесь имя сервера и принтер, на который вы хотите печатать.
# Далее скрипт был изменен Майклом Гамильтоном (Michael Hamilton)
# так что сервер, сервис и пароль могут быть считаны из файла
# /usr/var/spool/lpd/PRINTNAME/.config
#
# Для того, чтобы это работало, запись в /etc/printcap должна
# включать файл учета использования (af=…):
#
#cdcolour:
# :cm=CD IBM Colorjet on 6th:
# :sd=/var/spool/lpd/cdcolour:
# :af=/var/spool/Ipd/cdcolour/acct:
# :if=/usr/local/etc/smbprint:
# :mx=0:
# :lp=/dev/null:
#
# Файл /usr/var/spool/lpd/PRINTNAME/.config должен содержать
# server=PC_SERVER
# service=PR_SHARENAME
# password="password"
#
# Например,
# server=PAULS_PC
# service=CJET_371
# password=""
#
# Файл для отладочной информации, можно изменить на /dev/null
#
logfile=/tmp/smb-print.log
# logfile=/dev/null
spool_dir=/var/spool/Ipd/lp
config_file=$spool_dir/. config
eval `cat $config_file `
echo "server $server, service $service" >> $logfile
 echo translate
 echo "print –"
 cat
) | /usr/bin/smbclient "\$server$service" $password –U $user –N –P >> $logfile

Теперь вы можете печатать на сетевом принтере. Но, тем не менее, я все же рекомендую прочитать руководство по пакету Samba для получения более подробной информации о печати на сетевых принтерах.

Оглавление книги


Генерация: 0.452. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз