Внутри скрипта я отправляю определенный файл для печати, используя lpr
команду на выбранном пользователем принтере.
Список принтеров, из которых пользователь выбирает тот, который использовать, я получаю, используя lpstat -a
команду, а затем рассматривая все перед первым пробелом в качестве имени принтера.
Это работает, но сильно зависит от конкретного формата вывода lpstat -a
команды. Я боюсь, что в будущем (или сейчас в других дистрибутивах), если формат вывода изменится, он сломает скрипт.
Итак, есть ли способ получить имена всех установленных принтеров более безопасным способом, чем тот, который я использую?
источник
Мне также нужен список принтеров, и у меня была такая же проблема. Следуя приведенному выше предложению, я проверил источник lpstat.c. Я ожидал, что это будет suid, чтобы он мог читать "/etc/cups/printers.conf". Теперь я понимаю, что это не так.
Вместо этого он отправляет HTTP-запрос POST на localhost: 631, где выполняется cupsd. Запрос имеет форму Content-Type: application / ipp и такие вещи, как запрашиваемые атрибуты auth-info-required. Причина не быть более точной в том, что она использует нестандартную кодировку (см .: http://en.wikipedia.org/wiki/Internet_Printing_Protocol ) ... поэтому я подозреваю, что на самом деле анализ выходных данных lpstat -a на самом деле более чистый ,
источник