Машины MacOS используют свой собственный сервер cups. Для современных лазерных принтеров HP cups генерирует вывод PostScript, но с некоторыми специальными настройками для целевого принтера. Сервер cups на linux-машине анализирует входной PostScript и использует свои собственные настройки для регенерации вывода. В linux для создания вывода для большинства лазерных принтеров HP вызывается скрипт фильтра /usr/lib/cups/filter/hpps. Проблема заключается в выводе PostScript из MacOS, который, похоже, игнорируется cups под linux. Сценарий фильтра hpps вызывается с пустым файлом и генерирует пустую страницу. Принтер игнорирует это. Мы нашли два обходных пути решения проблемы:
1) Посылать вывод из MacOS, сжатый в gzip, на сервер linux. Сервер cups декомпрессирует вывод и передает его на фильтр hpps. Фильтр отправляет исходный файл с собственными заголовками и колонтитулами на принтер. Без специальных настроек (например, баннера) вывод из фильтра идентичен выводу MacOS. Для этого добавьте
?compression=gzip
к cups URI в вашем cups-сервере MacOS. Вызовите https://localhost:631 ваш браузер (включите интерфейс в терминале с помощью 'cupsctl WebInterface=yes'). Выберите 'Modify Printer', авторизуйтесь и выберите протокол печати IPP или IPPS. Целевой URI содержит предыдущий URI. Добавьте строку выше, например,
ipps:///printers/?compression=gzip
Сохраните описание и параметры модели и сохраните.
2) Установите RAW-принтер на linux-сервере с тем же целевым URI, что и у принтера HP. Но в качестве производителя и модели принтера выберите Raw. Например, если ваш принтер называется 'hp1', добавьте 'hp1_raw' в качестве второго принтера. В MacOS используйте URI принтера RAW в качестве адресата, например,
ipps:///printers/hp1_raw
Остается небольшой риск. Если кто-то пошлет на linux файл не PostScript в очередь raw, принтер распечатает этот файл как текст. Вы можете получить много смазанных кусочков бумаги, распечатав небольшой PDF-файл.
Вы можете получить группы, к которым принадлежит пользователь, с идентификатором -Gn имя пользователя
.
Чтобы подсчитать количество администраторов:
who | cut -d ' ' -f 1 |
while read user; do
id -Gn "$user"
done | grep -F -w "admin" | wc -l
Здесь используется команда who
для получения списка вошедших в систему пользователей, извлекается пустое имя пользователя с помощью cut
и выполняется группа поиск для каждого из них. Затем группы ищут строку admin
и подсчитывают результат.
В качестве альтернативы, сделайте это в обратном порядке, проверив, вошел ли в систему администратор:
who $( awk -F':' '$1 ~ /^admin/ { gsub(",", " ", $4); print $4 }' /etc/group ) | wc -l
awk
внутри подстановки команды выведет всех пользователей, которые принадлежат к группе admin
, и who
увидит, вошли ли они в систему. Затем подсчитывается количество выходных строк.