Dentro de um script, envio um determinado arquivo para impressão usando o lpr
comando em uma impressora selecionada pelo usuário.
A lista de impressoras, na qual o usuário seleciona a que será usada, recebo o lpstat -a
comando e considero tudo antes do primeiro espaço como o nome da impressora.
Isso funciona, mas depende muito do formato de saída específico do lpstat -a
comando. Receio que, no futuro (ou agora em diferentes distribuições), se o formato de saída mudar, ele quebrará o script.
Portanto, existe uma maneira de obter os nomes de todas as impressoras instaladas de maneira mais segura do que a que estou usando?
fonte
Também preciso de uma lista de impressoras e tive a mesma preocupação. Seguindo a sugestão acima, verifiquei a fonte do lpstat.c. Eu esperava que fosse um suid para que ele pudesse ler "/etc/cups/printers.conf". Agora percebo que não faz isso.
Em vez disso, envia uma solicitação HTTP POST para localhost: 631 onde o cupsd é executado. A solicitação é do tipo Content-Type: application / ipp e coisas como os atributos solicitados auth-info-required. O motivo para não ser mais específico é que ele usa uma codificação não-padrão (consulte: http://en.wikipedia.org/wiki/Internet_Printing_Protocol ) ... então eu suspeito que analisar a saída do lpstat -a é realmente mais limpo .
fonte