¿Cómo elimino cientos de impresoras de red agregadas automáticamente?

16

Es muy difícil para mí realizar la impresión, porque el diálogo de la impresora está lleno de cientos de impresoras agregadas automáticamente, por lo que no puedo encontrar la que quiero usar, mira la captura de pantalla a continuación.

Imagen del diálogo de la impresora que muestra una barra de desplazamiento muy larga

Las impresoras provienen de mi red de trabajo, donde aparentemente muchas personas (incluidos los estudiantes, supongo) están "compartiendo" sus impresoras domésticas, que mi computadora portátil recoge automáticamente. (casualmente, a veces desactivo el avahi-daemon en el trabajo, simplemente porque está usando una gran cantidad de CPU).

Cuando voy http://localhost:631/printers/, dice que hay 131 impresoras, y todas son de Marca y Modelo de 'Impresora local sin procesar'. Con dos excepciones: 1 es una impresora de red en el trabajo que configuré manualmente. Otra es una impresora de red en casa de mis padres, que también se agregó automáticamente y que estoy en la misma red que ahora. Pero el resto son solo basura que realmente me gustaría evitar. Se agradecerán consejos sobre cómo hacerlo.

Sin embargo, no volveré a mi lugar de trabajo por un tiempo, así que por ahora, me gustaría que se quitaran estas impresoras (que serían las impresoras agregadas automáticamente 129/130). ¿Hay una manera de hacer eso? Creo que podría hacerlo haciendo clic en la interfaz web de cups, pero para 129 impresoras, eso es demasiado. Así que estoy buscando un solo comando o consejos sobre cómo lograrlo con una especie de script.

jonaslb
fuente
1
ver /etc/cups/printers.conf. pare las tazas y luego quite las impresoras del archivo.
Rinzwind
2
No es un duplicado porque estoy preguntando cómo eliminar las impresoras ya instaladas, mientras que esa otra pregunta es sobre cómo evitar su instalación. Además, es una pregunta que tiene un lío de respuestas desactualizadas que no funcionan. Sé esto porque lo he visto antes y probé un poco.
jonaslb
1
Entendido, retraído :)
NGRhodes

Respuestas:

12

El uso de este comando: lpstat -apodemos ver las impresoras instaladas e identificar el nombre de la impresora deseada para mantener, podemos utilizar el grepcomando también para filtrar los resultados de esta manera: lpstat -a | grep <probable_name_of_printer>.

Entonces este pequeño script puede ayudar:

  1. Ejecute este comando para verificar que la impresora deseada no esté en la lista:

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • Esto no debería devolver nada, ya que hace lo siguiente:

      • lpstat -a: lista de impresoras instaladas
      • cut -d" " -f1: devuelve solo los nombres de las impresoras
      • sed -E '/<NAME_OF_PRINTER>/d': elimine el nombre de la impresora para guardarlo de la salida de los comandos anteriores
      • grep <NAME_OF_PRINTER>: asegúrese de que la impresora deseada no esté en la lista
  2. Si lo anterior se verifica; luego ejecute este comando para eliminar cualquier otra impresora que no necesite:

    sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'
    
George Udosen
fuente
Esto parece prometedor. Sin embargo, creo que puede haber un problema (con el comando de listado, presumiblemente, también el último comando). lpstat -aresultados en <printer_name> not accepting request since <some date> -\n reason unknown(con reason unknownen una nueva línea!). Entonces, usando su comando de listado obtengo muchas "impresoras" llamadas `reason` (hay una sangría).
jonaslb
¡Por favor, qué parte de los pasos tiene problemas y agregue cualquier resultado a su pregunta para que pueda seguir! ¿Qué te da el comando lpstat -a?
George Udosen
1
Funcionó bien, pero agregué otro sedcomando en la "cadena de tuberías": sed -E /reason/ddeshacerse de las líneas adicionales.
jonaslb
Gran trabajo y me alegro de que funcionó!
George Udosen