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 для получения более подробной информации о печати на сетевых принтерах.

Данный текст является ознакомительным фрагментом.