Исходные данные:
Xubuntu 14.04 server (64 разряда в качестве сервера и полторы сотни бездисковых клиентов, все грузятся с одного образа, 32-разряда, все работают как "толстые" клиенты). Ну и штук сто принтеров и МФУ примерно десяти видов, которые таскают туда-сюда.
При замене принтера на такой же достаточно "подсмотреть" серийный номер (страница диагностики или lsusb) и исправить.
Если принтер уже подключен к бездисковому терминалу можно пойти несколько длинным, но вполне употребимым путем. Сначала новый принтер нужно сконфигурировать обычным способом, как это делается на дисковых хостах (лучше зайти по ssh и удаленно запустить firefox), проверить. Способ организации административного доступа указан в документации LTSP. Если ничего не делать, то созданная конфигурация будет жить ровно до перезагрузки. А вот если зайти по ssh и "утянуть" нужный кусок printers.conf, то можно и принтер и филейную часть админа никуда не перемещать.
Xubuntu 14.04 server (64 разряда в качестве сервера и полторы сотни бездисковых клиентов, все грузятся с одного образа, 32-разряда, все работают как "толстые" клиенты). Ну и штук сто принтеров и МФУ примерно десяти видов, которые таскают туда-сюда.
В своем исходном виде поддержка печати в LTSP как-то не радует. Хотелось сразу нормальный cups на каждом рабочем месте, по возможности не зависящий от прочих, с конфигом, привязанным к "железу", а не к пользователю. Обязательным условием ставилась возможность легкого изменения конфига без пересборки образа. Делалось это все пару лет назад, и получилось, что уже сам боюсь позабыть как устроено.
Идея такова.
На этапе загрузки каждый клиент запускает скриптик, который проверяет наличие первичного файла конфигурации printers.conf.ИМЯ_КЛИЕНТА. Понятно, что если есть - устанавливает его в качестве /etc/cups/printers.conf и запускает свой cupsd. В этом файле описаны только локально подключенные принтеры, один из которых мы объявляем дефолтовым (это не обязательно, но выглядит вполне разумным). Все необходимые компоненты установлены в образ.
Подробности.
/var/lib/tftpboot/ltsp/i386/lts.conf содержит
[Default]
NFS_HOME=/home
NBD_SWAP=True
SERVER=10.0.0.4
SYSLOG_HOST=10.0.0.4
SOUND=True
LDM_SESSION=startxfce4
LDM_THEME="okgvv2"
KEEP_SYSTEM_SERVICES="cups x11vnc"
MODULE_01="pcspkr"
RCFILE_01="/opt/local/rc.cups"
RCFILE_02="/opt/local/rc.sshd"
CUPS_SERVER=localhost
LOCAL_APPS_EXTRAMOUNTS="/srv"
Синим цветом выделены параметры, имеющие значение. Самый первый указывает на применение старой доброй nfs вместо новой и модной sshfs. Тому есть отдельная причина (bug #730587 в реализации gnome-keyring). Если удастся уйти от nfs (грандиозная дыра в безопасности и проигрывает в скорости), нужно будет сделать дополнительную шару и монтировать ее отдельно, причем до того, как начнет выполняться rc.cups, возможно проще всего прям в нем и сделать. Это такое "письмо в будущее". Остальное все просто и понятно (cups не останавливать, скрипт запускать первым, за услугами печать добро пожаловать к себе же).
Сам скрипт /opt/ltsp/i386/opt/local/rc.cups
#! /bin/bash
## for ALL
/sbin/stop cups
echo "Common part" | logger
mount | logger
chmod a+rwx /etc/cups
## Individully
PREFIX=`hostname -s`
TARGET=/home/storage/prn/cfg
PPD=/home/storage/prn/ppd
echo "Individual part" | logger
# printers.conf & ppds
if [ -f ${TARGET}/printers.conf.${PREFIX} ]; then
cp -f ${TARGET}/printers.conf.${PREFIX} /etc/cups/printers.conf
fi
cp -f ${PPD}/*.ppd /etc/cups/ppd/
/sbin/start cups
Примеры файлов.
/etc/storage/prn/printers.conf.ts-inf-6
# inf dept
<Printer inf-6-color>
#UUID urn:uuid:1d740c0b-1812-3dee-55c8-7c9c204d8a24
Info Epson RX500
Location Информационный отдел
MakeModel Epson Stylus Photo RX500 - CUPS+Gutenprint v5.2.8
DeviceURI usb://EPSON/Stylus%20Photo%20RX500?serial=L68030504200649440
State Idle
StateTime 1341994615
Type 8425484
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy abort-job
</Printer>
<DefaultPrinter inf-6>
UUID urn:uuid:ecebc571-c4ca-3b2c-4033-eb9f1ef0aded
Info Hewlett-Packard HP LaserJet M1005
Location ts-inf-6
MakeModel HP LaserJet M1005 MFP Foomatic/foo2xqx (recommended)
DeviceURI hp:/usb/HP_LaserJet_M1005?serial=KJ1MWB9
PPDTimeStamp *
State Idle
StateTime 1457599900
Type 8425492
Accepting Yes
Shared Yes
ColorManaged Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy retry-job
</Printer>
Файл /home/storage/prn/ppd/inf-6-color.ppd - симлинк на /home/storage/prn/ppd/Epson_RX500.ppd. Файл /home/storage/prn/ppd/inf-6.ppd ссылается на /home/storage/prn/ppd/HP1005MFP.ppd. Таким образом там живет коллекция ppd-шек, иногда пополняемая, и куча ссылок на них.
Немного про hplip.
Для последующего нормального функционирования (hplip) достаточно один раз установить какой-либо сетевой аппарат примерно таким способом.ltsp-chroot -m
hp-setup -i
exit
ltsp-update-image
Способы создания printers.conf.*
Самый простой из известных, - просто подключить принтер к "нормальному" т.е. дисковому хосту, настроить все параметры и скопировать получившийся фрагмент в файл "по месту требования".При замене принтера на такой же достаточно "подсмотреть" серийный номер (страница диагностики или lsusb) и исправить.
Если принтер уже подключен к бездисковому терминалу можно пойти несколько длинным, но вполне употребимым путем. Сначала новый принтер нужно сконфигурировать обычным способом, как это делается на дисковых хостах (лучше зайти по ssh и удаленно запустить firefox), проверить. Способ организации административного доступа указан в документации LTSP. Если ничего не делать, то созданная конфигурация будет жить ровно до перезагрузки. А вот если зайти по ssh и "утянуть" нужный кусок printers.conf, то можно и принтер и филейную часть админа никуда не перемещать.
Комментариев нет:
Отправить комментарий