The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Документация для Linux" / Оглавление документа
next up previous contents index
Next: Подключение к серверу Novell Up: Samba Previous: Доступ к принтеру Linux   Contents   Index

Доступ к принтеру Windows с машин работающих под Linux

Для доступа к принтеру на Windows машине:

  1. Вы должны иметь правильные записи в файле /etc/printcap и они должны соответствовать локальной структуре директориев (для буферизации и т.п.)
  2. У Вас должен быть скрипт /usr/bin/smbprint. Он поставляется вместе с исходными текстами Samba, но не со всеми двоичными дистрибутивами Samba.
  3. Если Вы хотите преобразовывать ASCII файлы в Postscript, вы должны иметь программу nenscript, или ее эквивалент nenscript - конвертер Postscript. Она обычно устанавливается в директорию /usr/bin.
  4. Вы можете сделать печать через Samba более легкой, используя программы-надстройки. Простой скрипт на Perl, который обрабатывает ASCII, Postscript или преобразованный Postscript приведен ниже.
  5. Вы также можете использовать MagicFilter. MagicFilter имеет преимущества потому, что он ``знает'' как автоматически преобразовывать достаточно большое количество форматов файлов.

Запись в файле /etc/printcap, приведенном ниже, сделана для принтера HP 5MP на сервере Windows NT. Используются следующие поля файла /etc/printcap:

Для более детальной информации о печати смотрите справочные страницы по printcap.

# /etc/printcap
#
# //zimmerman/oreilly via smbprint
#
lp:\
        :cm=HP 5MP Postscript OReilly on zimmerman:\
        :lp=/dev/lp1:\
        :sd=/var/spool/lpd/lp:\
        :af=/var/spool/lpd/lp/acct:\
        :mx#0:\
        :if=/usr/bin/smbprint:

Убедитесь, что буферный директорий и директорий, используемый для учета использования, существуют и для них имеется право на запись.

Убедитесь, что строка if содержит правильный путь к скрипту smbprint и убедитесь, что записи указывают на правильное устройство вывода (специальный файл /dev).

Далее приведен сам скрипт smbprint. Он обычно находится в директории /usr/bin и написан человеком, который создал пакет Samba. Этот скрипт поставляется вместе с дистрибутивом исходного кода Samba, но отсутствует в некоторых бинарных дистрибутивах.

#!/bin/sh -x
# Этот скрипт является входным фильтром для основанной на printcap
# печати на unix-машинах. Он использует программу smbclient для
# печати файла на указанный smb-сервер и сервис.
# Например Вы можете быть запись в printcap, подобная этой
#
smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
#
# которая создает unix-принтер названный "smb", который будет
# печатать с помощью этого скрипта. Вам необходимо создать директорий
# спула /usr/spool/smb с соответствующими правами и владельцем
# Установите здесь сервер и сервис на который Вы хотите печатать. В
# этом примере предполагается наличиеWfWg PC, названного "lapland", который
# имеет экспортируемый принтер, называемый "printer" без пароля
#
# Далее скрипт был изменен hamiltom@ecnz.co.nz (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/lpd/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/lpd/lp
config_file=$spool_dir/.config
# Должны читаться следующие переменные, заданные в
конфигурационном файле:
#   server
#   service
#   password
#   user
eval `cat $config_file`
#
# Некоторая помощь при отладке. Замените >> на > для экономии места.
#
echo "server $server, service $service" >> $logfile
(
# Вы можете добавить строку 'echo translate' для автоматизации.
# CR/LF translation when printing.
        echo translate
        echo "print -"
        cat
) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile

Большинство дистрибутивов Linux поставляется с программой nenscript для преобразования ASCII документов в Postscript. Следующий скрипт на Perl облегчает работу, обеспечивая простой интерфейс для печати с использованием smbprint.

Использование: print [-a|c|p] <filename>
       -a печатает <filename> как ASCII
       -c печатает <filename> отформатированный как исходный код
       -p печатает <filename> как Postscript
        Если опции не заданы, программа попробует определить
        тип файла и соответственно печатать

Используя smbprint для печати ASCII файлов, скрипт отслеживает длинные строки. Если возможно, скрипт разрывает длинную строку на пробеле (вместо разрыва в середине слова).

Форматирование исходного кода таже выполняется с помощью программы nenscript. Она берет ASCII-файл и форматирует его в 2 колонки с заголовком (дата, имя файла и т.п.). Эта программа дополнительно нумерует строки. Используя скрипт как пример, можно ввести другие типы форматирования. Postscript-документы являются уже отформатированными, так что они печатаются сразу.



Alex Otwagin 2002-12-16



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру