UnixMountainSkiFun

Unix Горы Лыжи

02-06-2008 14:44

Доступ к принтерам с помощью smbprint


Использование Windows-принтера из Linux-а очень простО. Не считая небольшого конфигурирования, единственное, что потребуется, -- это утилита smbprint. Помимо этого Samba предоставляет утилиту smbspool, которая выполняет точно такую же задачу как и smbprint. Однако аргументы ее командной строки сделаны таким образом, чтобы она могла быть использована как спулер (spooler) Common Unix Printing System. В этом разделе мы рассмотрим только smbprint.

Чтобы настроить Windows-принтер, для начала потребуется создать конфигурационный файл, следующий спецификации SMB. Рекомендуемое местоположение такого файла $SPOOL_DIR/lpd/<printer-name>, где $SPOOL_DIR стандартный spool-каталог вашей системы. Например, в системе Debian таким каталогом является /var/spool. Создайте такой каталог и затем создайте файл, содержащий имя print-сервера, наименование общедоступного ресурса и пароль (если это необходимо). Сохраните такой файл в новом каталоге с именем .config. Например, на моем Linux-компьютере, удаленный принтер Canon BJ-200, установлен следующим образом:

 $ cat /var/spool/lpd/canon/.config
 server=KEARNEY
 service=CANON
 password=""

Теперь можно отправить задание на печать на удаленный принтер выполнением команды smbprint:

 $ smbprint /var/spool/lpd/canon/acct < print.job

Первый аргумент это имя учетного файла (accounting file), в который lpd должен журналировать задание на печать. Этот файл не обязан существовать, однако он должен быть в правильном spool-подкаталоге. Утилита smbprint предполагает, что конфигурационный файл находится в том же самом каталоге, что и этот учетный файл. Вторым аргументом является файл, составляющий задание на печать, форматированный в соответствии с языком управления принтера. Если Вы недостаточно компетентны в PostScript-е, то потребуется использовать Ghostscript (gs), чтобы конвертировать PostScript-файл в конкретный язык управления принтером. В моем случае (принтер Canon bubble jet), я использую драйвер bj200, что выражается в следующей командной строке:

 $ cat myfile.ps | gs -q -dSAFER -sDEVICE=bj200 -dQuality=1 -dNOPAUSE \ \\
    -sOutputFile=- - | smbprint /var/spool/lpd/canon/acct

Я поместил эту командную строку в shell-скрипт, и тогда всякий раз когда я перенаправляю PostScript-документ на этот скрипт, происходит удаленная печать.

Последний штрих состоит в том, чтобы объединить вызов этого скрипта с той print-архитектурой, которую Вы предпочитаете. Например, если Вы используете lpd/lprng, то потребуется изменить строку в /etc/printcap, чтобы заявить этот скрипт как output-фильтр:

 # /etc/printcap: printer capability database. See printcap(5).
 # You can use the filter entries df, tf, cf, gf, etc. for
 # your own filters. See /etc/filter.ps, /etc/filter.pcl, and
 # the printcap(5) manual page for further details.

     canon|Canon BJ-200 on Kearney:\ \\
     :sd=/var/spool/lpd/canon:\ \\
     :af=/var/spool/lpd/canon/acct:\ \\
     :mx#0:\ \\
     :sh:\ \\
     :of=/etc/printing/canon.filter:

<< Доступ к ресурсам с помощью smbsh и smbfs | Multi Tool Linux | Графические клиенты >>


edit RightSideBar