среда, 24 марта 2010 г.

Печать на шаровый матричный принтер через самбу

1. Снести CUPS (если установлен) напрочь
2. поставить lprng, magicfilter
3. запуститить magicfilter и отконфигурить принтер
4. в самбе:
printcap name = /etc/printcap
printing = lprng
print command =
lpq command = %p
lprm command =


[epson]
comment = epson
path = /var/spool/lpd/lp
printer name = epson
guest ok = Yes
printable = Yes
print command = lpr -r -h -P %p %s
use client driver = Yes
force printername = Yes


5. в /etc/printcap (формируетс при запуске магикфильтра):
lp|epson|epson:\
:lp=/dev/lp0:sd=/var/spool/lpd/lp:\
:sh:pw#80:pl#72:px#1440:mx#0:\
:if=/etc/magicfilter/epson9-filter:\
:af=/var/log/lp-acct:lf=/var/log/lp-errs:


6. добавить в /etc/rc2.d/ файл S20lps0
#!/bin/sh
/sbin/modprobe lp
/bin/chmod 777 /var/spool/lpd/lp


7. смотреть логи
8.по хорошему надо сделать чтобы модуль порта лпт цеплялся автоматом (echo "lp" >> /etc/modules ), но чот как то изначально стратил... :)


На практике вам нужно знать всего три команды: lpq, lprm,lpc
Lpq - это команда просмотра очереди печати.
Lprm - команда удаляет задания из очереди.
Синтаксис команды lprm:
Lprm - удаляет последнее задание в очереди;
Lprm - 14, 15 - удаляет задания 14 и 15 из очереди;
Lprm - username - удаляет задания конкретного пользователя из очереди;
Lprm - all - удаляет все задания из очереди.
Lpc - команда, позволяющая контролировать работу принтера, необходимости в ее использовании практически не возникает.





Samba - корзина+расширенные логи

http://www.opennet.ru/base/net/samba_tune_auth.txt.html


Вместе с Samba поставляется ряд так называемых "VFS-модулей" (Virtual
File System), с их помощью становится возможным выполнение таких
действий как протоколирование процесса работы на сетевых папках,
организация сетевой корзины, теневое копирование (shadow copy) данных,
подключение антивирусных модулей и т.п. В частности, для
протоколирования действий пользователей в Samba имеется три VFS-модуля:
audit, extd_audit, full_audit. Для поставленной нами задачи
мы будем использовать последний из них.

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

имя_модуля:параметр1
имя_модуля:параметр2=значение1
имя_модуля:параметр3=значение2 значение3 значение4


Все настройки производятся в главном конфигурационном фале Samba -
smb.conf. Полный список параметров можно, вернее даже лучше
всего, посмотреть в исходном коде модуля, который находится в директории
samba-3.0.23d/source/vfs. Давайте построчно рассмотрим
вышеприведенный конфиг:

vfs objects = full_audit

Подключает использование данного модуля при работе с указанной сетевой
папкой

full_audit:prefix= %m|%U

Задает возможность с помощью макропеременных Samba подставлять нужные
значения в качестве источника события на сетевой папке при
протоколировании действий. В нашем случае в качестве источника будет
производится подстановка вида
NetBIOS_имя_комьютера|имя_пользователя и в log-файл будет
записываться что-то вроде:

Mar 5 08:47:51 calypso smbd_audit: comp1|username|mkdir|ok|/mnt/hdd1/new folder


full_audit:success=write rename unlink mkdir rmdir
full_audit:failure=write rename unlink mkdir rmdir


Модуль протоколирует действия которые завершились успешно - параметр
success и закончились неудачей - failure
соответственно. Как, наверное уже понятно, для данной сетевой папки мы
будем фиксировать как "успех" так и "неудачу" создания, переименования и
удаления файлов и директорий. Если же, например, нужно протоколировать
ВСЕ неудачные действия на шаре то параметр full_audit:failure
нужно не указывать и по умолчанию он будет фиксировать все "неудачи".

full_audit:facility=LOCAL5
full_audit:priority=INFO


Здесь мы остановимся немного подробнее.

Samba умеет вести журналы как самостоятельно так и с помощью системы
Syslog. Для подробного протоколирования действий
пользователей второй вариант является более предпочтительным, так как с
его помощью можно более гибко настроить журналирование. Данная
гибкость, в частности, позволит нам вести протоколы работы с каждой
сетевой папкой в отдельный файл.

Для определения источника журналируемых записей Syslog имеет
такие понятия как "категория" - facility и "приоритет" -
priority. Категория - это ряд предописанных значений,
событий, вроде сообщений о регистрации пользователей, сообщений от
системного планировщика, ядра, почтовой системы и т.п. Применительно к
нашей задаче имеются зарезервированные категории local0 -
local7, которые не привязаны ни к какому системному событию и
могут быть свободно использованы администратором.

Понятие "приоритет" означает уровень важности поступаемых сообщений.
Имеется 8 уровней приоритета: debug, info, warning, notice,
warning, err, crit, alert, emerg.

Нам необходимо настроить протоколирование таким образом, чтобы протоколы
с сетевых папок велись в отдельные файлы: каждая "шара" - в свой файл
журнала. Вот здесь нам на помощь и приходят вышеописанные уровни
приоритета. Мы каждой системной папке присвоим свой уникальный уровень
приоритета в пределах выбранной категории, а syslog
сконфигурируем таким образом, чтобы он разделял протоколы, поступающие
от сетевых папок. Т.е. будут использоваться приоритеты INFO и
NOTICE категории LOCAL5.

Приступим к настройке syslogd.

По умолчанию во FreeBSD все сообщения класса notice
перенаправляются в файл /var/log/messages. Нам сие не нужно,
поэтому нужно переконфигурировать syslog дабы разделить поступаемые
классы сообщений. Сделаем это следующим образом: строку

*.notice ...


заменим на

local5.=info /var/log/samba/docs.log
local5.=notice /var/log/samba/pub.log
local0.notice;local1.notice;local2.notice;local3.notice /var/log/messages
local4.notice;local6.notice;local7.notice /var/log/messages



Таким образом мы выделили приоритеты info и notice
категории local5 и перенаправили их в соответствующие файлы
журналов и, на всякий случай, для других приложений перенаправили
остальные категории local0-local7 приоритета
notice в /var/log/messages


Теперь очередь за настройкой сетевой корзины. За это
отвечает VFS-модуль recycle. У него имеются следующие
параметры:

recycle:repository=/mnt/hdd2/lost_n_found

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

recycle:exclude = *.tmp | *.TMP | ~$* | ~WRL*
Список регулярных выражений для имен файлов которые при удалении будут
удаляться, а не перемещаться в корзину. Каждое выражение отделяется от
соседних символом "|".
ВНИАНИЕ! Маска файла и символ "|" обязательно должны
разделяться символом пробела.

recycle:excludedir = /mnt/hdd1/temp
Список директорий удаление файлов и директорий из которых не переместит
их в сетевую корзину и они на самом деле будут удалены.

recycle:maxsize=104805760
Максимальный размер файла в байтах, который может помещаться в корзину,
если размер больше - файл будет удален. В данном случае в корзину будут
попадать файлы размером не более 10 Мб.

recycle:keeptree
При удалении файла сохранять весь файловый путь относительно сетевой
папки. Т.е. например при удалении файла file.txt,
находящегося по пути path/to/file относительно сетевой шары
[pub] с абсолютным путем /mnt/hdd2, в сетевой
корзине будет создан файловый путь/mnt/hdd2/path/to/file и в
эту директорию будет помещен file.txt.

recycle:versions
При удалении одного и того же файла filename, находящегося по
одному и тому же сетевому пути, в сетевой корзине будут создаваться
копии файла с именами Copy #1 filename, Copy #2 filename и
т.д.