Сервер печати без драйверов CUPS в качестве прокси-сервера для принтеров с устаревшими драйверами принтеров PPD

У вас могут быть разные подходы, и нам нужно, чтобы вы описали НУЖНОСТЬ, которая у вас есть (определить логин конкретного человека? определить, кто был зарегистрирован в определенное время? и т. д.)

Только то, что вы сказали (добавление новой строки, когда что-то появляется в конце ), у вас уже есть разные подходы:

#finding if a 'last' line contains a "specific_thing" (which is itself a regular expression...) 
# and can print all lines or not depending on showall value
while true ; do
  last | awk -v looking_for="specific_thing" -v showall=0 '
    ( showall == 1 )     { print $0 }
    ( $0 ~ looking_for ) { action="print line? and add something to it?" }
  '
done

#watch for new things appearing in last and not the whole "last" output every time
watch last | awk -v looking_for="specific_thing" -v showall=0 '
    ( showall == 1 )     { print $0 }
    ( $0 ~ looking_for ) { action="print the line? with added infos?"
                           action="execute : system(some command) ?"
                           action="all of that?" }
  '

и т. д.

Вы также можете искать появления в лог-файлах

Вы также можете вставить какую-нибудь команду в /etc/profile (будьте осторожны, так как это может иметь много последствий для безопасности, а также может создать проблемы при загрузке, запуске init и т. д. нескольких (или всех )логинов пользователя, и в любом случае может быть обойден быстрым нажатием ctrl -C при входе в систему...)

И т. д. и т. д. Много способов, и лучшим будет тот, который исправит то, что вам нужно сделать, а теперь обязательно придерживаться «последнего» и «добавлять новую строку, когда я вижу что-то в нем»

Для получения более подробных ответов, пожалуйста, дайте нам действительно то, что вам НУЖНО, и ПОЧЕМУ вам это нужно, а не КАК вы думаете, вам нужно сделать то или иное действие (добавить новую строку, когда вы видите вывод last? Как вы думаете, почему вам нужно это делать? какова глубинная потребность?)

0
04.01.2021, 22:30
1 ответ

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

Я предполагаю, что принтер успешно подключен, и вы можете печатать на нем с сервера печати:

printserver ~$ lp -E -d myprinter /usr/share/cups/data/testprint

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

┏━━━━━━━━━━━━━┓                ┏━━━━━━━━━━━━━┓
┃ localhost   ┃                ┃ printserver ┃
┃             ┃ IPPEverywhere  ┃   ┌───────┐ ┃  legacy PPD driver  ┏━━━━━━━━━━━┓
┃             ┃════════════════╋═══│ Queue │═╋═════════════════════┫ myprinter ┃
┃             ┃                ┃   └───────┘ ┃                     ┗━━━━━━━━━━━┛
┗━━━━━━━━━━━━━┛                ┗━━━━━━━━━━━━━┛

При использовании Debian Buster на сервере печати с установленным CUPS необходимо разрешить общий доступ:

printserver ~$ sudo cupsctl -E --share-printers
printserver ~$ sudo cupsctl -E   # check settings

Также с Debian на устройстве с установленным CUPS установите сервер печати по умолчанию в/etc/cups/client.conf:

client ~$ sudo bash -c 'echo "ServerName printserver" >> /etc/cups/client.conf'

Это все, что нам нужно сделать, чтобы получить доступ к Принтеру. Проверьте его статус и параметры с помощью :

.
client ~$ lpstat -E -t
client ~$ lpoptions -E
client ~$ lpoptions -E -l

С помощью последней команды вы найдете специальные параметры принтера, которые не являются общими из lp, например BRMonoColorмоего цветного принтера. В этом примере две копии двустороннего листа будут напечатаны серым цветом, а не цветом по умолчанию :

.
client ~$ lp -E -d myprinter -n 2 -o fit-to-page -o collate=true -o sides=two-sided-long-edge -o BRMonoColor=Mono./two-pages.pdf

Проблема может возникнуть, например, если к клиенту подключен локальный USB-принтер. Вы не увидите его очередь на localhost.В этом случае вы всегда можете указать сервер печати с помощью переменной окружения CUPS_SERVER:

.
client ~$ CUPS_SERVER=localhost lpstat -E -t
client ~$ CUPS_SERVER=localhost lp -E...

Ссылки:

0
18.03.2021, 22:40

Теги

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