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