У вас могут быть разные подходы, и нам нужно, чтобы вы описали НУЖНОСТЬ, которая у вас есть (определить логин конкретного человека? определить, кто был зарегистрирован в определенное время? и т. д.)
Только то, что вы сказали (добавление новой строки, когда что-то появляется в конце ), у вас уже есть разные подходы:
#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? Как вы думаете, почему вам нужно это делать? какова глубинная потребность?)
Иногда я использую частичное решение, которое можно использовать только с устройствами 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...
Ссылки: