Dentro de un script, envío un cierto archivo para imprimir usando el lpr
comando en una impresora seleccionada por el usuario.
La lista de impresoras, de la cual el usuario selecciona la que usará, aparece usando el lpstat -a
comando y luego considero todo antes del primer espacio como el nombre de la impresora.
Esto funciona pero depende en gran medida del formato de salida específico del lpstat -a
comando. Me temo que en el futuro (o ahora en diferentes distribuciones) si el formato de salida cambia, se romperá el script.
Entonces, ¿hay alguna forma de obtener los nombres de todas las impresoras instaladas de una manera más segura que la que estoy usando?
fuente
También necesito una lista de impresoras y tenía la misma preocupación. Siguiendo la sugerencia anterior, verifiqué la fuente de lpstat.c. Esperaba que fuera un suid para que pudiera leer "/etc/cups/printers.conf". Ahora me doy cuenta de que no hace esto.
En su lugar, envía una solicitud HTTP POST a localhost: 631 donde se ejecuta cupsd. La solicitud tiene el formato Tipo de contenido: aplicación / ipp y elementos como los atributos solicitados auth-info-required. La razón para no ser más específico es que usa una codificación no estándar (ver: http://en.wikipedia.org/wiki/Internet_Printing_Protocol ) ... así que sospecho que analizar la salida de lpstat -a es realmente más limpio .
fuente