Как переназначить имена пользователей при печати на общем принтере?

На работе моя группа в настоящее время использует автономные сетевые принтеры. Мы также запускаем собственную автономную сеть Linux для некоторых членов группы. Все работает прекрасно. Руководство решило, что для всех будет более эффективно и устойчиво использовать принтеры с централизованным обслуживанием. Это дает нам ряд полезных функций, таких как возможность отправить задание на печать, а затем выбрать его на любом принтере, который мы хотим. Проблема в том, что печать будет привязана к центральной системе аутентификации, которую мы не используем.

Оказывается, что нам на самом деле не нужно использовать аутентификацию как таковую, нам просто нужно убедиться, что имя пользователя, под которым отправлено задание на печать, имеет правильное имя пользователя - в противном случае вы не сможете его забрать , Мы могли бы изменить все имена пользователей и домашние каталоги для всех наших пользователей, чтобы они соответствовали централизованно управляемым, но по понятным причинам мы предпочли бы этого не делать. Если мы сможем переназначить наши имена пользователей на централизованно управляемые для печати, тогда все должно просто работать.

В настоящее время мы используем чашки для наших нужд печати, и, насколько я могу судить, он не поддерживает никакую форму переназначения имени пользователя. Это правильно? Я знаю, что Samba поддерживает переназначение имени пользователя, но я не уверен, что он будет работать в этой конфигурации. Нам нужно:

  • печать локального имени пользователя (на наш сервер при необходимости) -> переназначение имени пользователя на центральное имя пользователя -> задание на печать, отправленное в службу печати. ​​

Кто-нибудь может подсказать, как нам этого добиться?

3
задан 6 December 2012 в 19:51

1 ответ

Теперь я решил эту проблему. Я добавил настоящий принтер как обычно, а затем создал новый скрипт бэкэнда cups под названием / usr / lib / cups / backend / remap:

#!/bin/bash

if [ "$#" == "0" ]; then
    echo "network remap \"Unknown\" \"Username remap backend\""
    exit 0
fi

DEVICE_URI=$(echo ${DEVICE_URI} | sed -e "s/^remap/ipp/")
FINAL_CONTENT_TYPE="application/vnd.cups-postscript"
PPD="<path to real printer ppd>"
PRINTER="<real printer name>"
JOBNUM=$1
USER=$(ypmatch $2 usermap)
if [ "$?" == "1" ]; then
    exit 1
fi
JOBTITLE=$3
COPIES=$4
shift
shift
shift
shift
cat | /usr/lib/cups/backend/ipp ${JOBNUM} ${USER} "${JOBTITLE}" ${COPIES} "$@"
exit $?

Затем я добавил новый фальшивый принтер, используя этот бэкэнд , Сценарий предполагает, что ваш фальшивый принтер и реальный принтер имеют одинаковое местоположение, но разные протоколы, например:

  • remap: // сервер: 631 / printers / printer_name
  • ipp: / / server: 631 / printers / printer_name

Он заменяет «remap» на «http» в переменной среды DEVICE_URI, обновляет некоторые другие переменные среды, ищет сопоставленного пользователя (в данном случае на основе пользовательская карта NIS) и запускает задание на реальном принтере, используя бэкэнд ipp, но с обновленным именем пользователя.

Бэкэнды кубков ожидают следующие аргументы:

  • $ 1: идентификатор задания CUPS
  • $ 2: имя пользователя
  • $ 3: должность
  • $ 4: количество запрошенных копий
  • $ 5: параметры задания на печать
  • $ 6: файл задания на печать (с путем)

Если $ 6 пусто, он ожидает ввода от STDIN.

0
ответ дан 6 December 2012 в 19:51

Другие вопросы по тегам:

Похожие вопросы: