Ottieni l'elenco delle stampanti installate


8

All'interno di uno script invio un determinato file da stampare utilizzando il lprcomando su una stampante selezionata dall'utente.

L'elenco delle stampanti, da cui l'utente seleziona quella da utilizzare, ottengo il lpstat -acomando e quindi considero tutto prima del primo spazio come il nome della stampante.

Funziona ma si basa fortemente sul formato di output specifico del lpstat -acomando. Temo che in futuro (o ora su diverse distribuzioni) se il formato di output cambia, lo script verrà interrotto.

Quindi, c'è un modo per ottenere i nomi di tutte le stampanti installate in un modo più sicuro di quello che sto usando?

Risposte:


1

CUPS è (parzialmente) concesso in licenza GPL, quindi puoi semplicemente prendere la fonte di lpstat(1) e creare il tuo piccolo programma (con licenza GPL) di dare-il-mio-elenco-di-stampanti- programma che non cambierà mai il modo in cui genera i dati .

(1) È dentro cups-XX/cups/systemv/lpstat.c, non capisco i numeri delle versioni lì.


Questa è una buona soluzione, ma sfortunatamente lo "script" è in realtà un'applet Java, non posso cambiare il sistema di destinazione o installare nuove cose su di esso. È legato a questa domanda: stackoverflow.com/questions/13743738/… E ho pensato che usare lpr invece fosse una buona idea
Enoon

Hmm, c'è CUPS4J , che potrebbe o non potrebbe essere un'opzione ... può "ottenere oggetti stampanti da un server CUPS che può essere usato per stampare e monitorare i lavori"
sr_

Questa sembra una soluzione interessante, grazie!
Pomeriggio

3

Ho anche bisogno di un elenco di stampanti e ho avuto la stessa preoccupazione. Seguendo il suggerimento sopra ho controllato la fonte di lpstat.c. Mi aspettavo che fosse un aiuto in modo che potesse leggere "/etc/cups/printers.conf". Ora mi rendo conto che non lo fa.

Invece invia una richiesta POST HTTP a localhost: 631 dove viene eseguito cupsd. La richiesta è nel formato Content-Type: application / ipp e cose come gli attributi richiesti auth-info-richiesto. Il motivo per non essere più specifico è che utilizza una codifica non standard (vedi: http://en.wikipedia.org/wiki/Internet_Printing_Protocol ) ... quindi sospetto che effettivamente analizzare l'output di lpstat -a sia effettivamente più pulito .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.