| |
Для доступа к принтеру на Windows машине:
/etc/printcap
и они
должны соответствовать локальной структуре директориев (для
буферизации и т.п.)
/usr/bin/smbprint
. Он поставляется
вместе с исходными текстами Samba, но не со всеми двоичными
дистрибутивами Samba.
nenscript
, или ее эквивалент nenscript
-
конвертер Postscript. Она обычно устанавливается в директорию
/usr/bin
.
MagicFilter
. MagicFilter
имеет
преимущества потому, что он ``знает'' как автоматически
преобразовывать достаточно большое количество форматов файлов.
Запись в файле /etc/printcap
, приведенном ниже, сделана для
принтера HP 5MP на сервере Windows NT. Используются следующие поля
файла /etc/printcap
:
cm
- комментарий;
lp
- имя устройства, открываемого для вывода;
sd
- директория спула принтера (на локальной машине);
af
- файл учета пользования принтером;
mx
- максимальный размер файла (ноль - без ограничений);
if
- имя входного фильтра (скрипта).
Для более детальной информации о печати смотрите справочные
страницы по 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-документы являются уже
отформатированными, так что они печатаются сразу.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |