Obter lista de impressoras instaladas

8

Dentro de um script, envio um determinado arquivo para imprimir usando o comando lpr em uma impressora selecionada pelo usuário.

A lista das impressoras, a partir das quais o usuário seleciona o que usar, eu uso o comando lpstat -a 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 comando lpstat -a . Eu tenho medo que no futuro (ou agora em distribuições diferentes) se o formato de saída mudar, isso quebrará o script.

Então, existe uma maneira de obter os nomes de todas as impressoras instaladas de uma maneira mais segura do que a que estou usando?

    
por Enoon 08.12.2012 / 17:37

2 respostas

1

CUPS é (parcialmente) licenciado sob GPL, então você pode simplesmente pegar a fonte de lpstat (1) e crie o seu próprio pequeno (com licença GPL) give-my -list-of-printers -programa que nunca mudará a maneira como ele envia os dados.

(1) Está em cups-XX/cups/systemv/lpstat.c , apenas não entendo os números das versões.

    
por 09.12.2012 / 11:27
2

Eu 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 estava esperando que fosse um suid para que ele pudesse ler "/etc/cups/printers.conf". Agora percebo que isso não acontece.

Em vez disso, ele envia uma solicitação HTTP POST para localhost: 631, em que cupsd é executado. A solicitação é do tipo Content-Type: application / ipp e coisas como request-attributes auth-info-required. A razão para não ser mais específico é que ele usa uma codificação não padrão (veja: link ) ... então eu suspeito realmente analisando a saída de lpstat -a é realmente mais limpo.

    
por 17.12.2013 / 18:40