Come rimuovo centinaia di stampanti di rete aggiunte automaticamente?


16

È molto difficile per me eseguire la stampa, perché la finestra di dialogo della stampante è piena di centinaia di stampanti aggiunte automaticamente, quindi non riesco a trovare quella che voglio usare, vedi screenshot qui sotto.

Immagine della finestra di dialogo della stampante che mostra una barra di scorrimento molto lunga

Le stampanti derivano dalla mia rete di lavoro, dove apparentemente molte persone (compresi gli studenti, immagino) stanno "condividendo" le loro stampanti domestiche, che il mio laptop raccoglie automaticamente. (per coincidenza a volte disabilito avahi-daemon al lavoro, semplicemente perché utilizza una grande quantità di CPU).

Quando vado a http://localhost:631/printers/, dice che ci sono 131 stampanti, e sono tutte di marca e modello 'Local Raw Printer'. Con due eccezioni: 1 è una stampante di rete al lavoro che ho configurato manualmente. Un altro è una stampante di rete da parte dei miei genitori, che è stata anche aggiunta automaticamente e che mi trovo sulla stessa rete di adesso. Ma il resto è solo spazzatura che vorrei davvero evitare. Suggerimenti su come farlo sarebbero apprezzati.

Non tornerò al mio posto di lavoro per un po 'di tempo, quindi per ora, vorrei solo che queste stampanti (che sarebbero le stampanti aggiunte automaticamente 129/130) fossero rimosse. C'è un modo per farlo? Immagino che potrei farlo facendo clic nell'interfaccia web di cups, ma per 129 stampanti, è un po 'troppo. Quindi sto cercando un singolo comando o suggerimenti su come raggiungerlo con una sorta di script.


1
vedi /etc/cups/printers.conf. fermare le tazze e quindi rimuovere le stampanti dal file.
Rinzwind,

2
Non è un duplicato perché sto chiedendo come rimuovere le stampanti già installate, mentre l'altra domanda riguarda la prevenzione della loro installazione. Inoltre, è una domanda che ha un casino di risposte obsolete che non funzionano. Lo so perché l'ho già visto e provato.
jonaslb,

1
Capito, ritirato :)
NGRhodes

Risposte:


12

Utilizzando questo comando: lpstat -apossiamo vedere le stampanti installate e identificare il nome della stampante desiderata per mantenere, possiamo usare il grepcomando anche per filtrare i risultati in questo modo: lpstat -a | grep <probable_name_of_printer>.

Quindi questo piccolo script può aiutare:

  1. Eseguire questo comando per verificare che la stampante desiderata non sia elencata:

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • Questo non dovrebbe restituire nulla in quanto fa quanto segue:

      • lpstat -a: elenca le stampanti installate
      • cut -d" " -f1: restituisce solo i nomi delle stampanti
      • sed -E '/<NAME_OF_PRINTER>/d': rimuove il nome della stampante da conservare dall'output dei comandi precedenti
      • grep <NAME_OF_PRINTER>: assicurarsi che la stampante desiderata non sia nell'elenco
  2. Se quanto sopra si verifica; quindi esegui questo comando per rimuovere ogni altra stampante che non ti serve:

    sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'
    

Sembra promettente. Penso che potrebbe esserci un problema (con il comando di elenco quindi presumibilmente anche l'ultimo comando). lpstat -arisulta in <printer_name> not accepting request since <some date> -\n reason unknown(con reason unknownsu una nuova linea!). Quindi usando il tuo comando di elenco ottengo molte "stampanti" chiamate "reason" (c'è un rientro).
jonaslb,

Per favore, quale parte dei passaggi stai riscontrando problemi e aggiungi eventuali risultati alla tua domanda in modo che io possa seguire! Cosa lpstat -ati dà il comando ?
George Udosen,

1
Funzionava bene, ma ho aggiunto un altro sedcomando nella "catena di tubi": sed -E /reason/deliminare le linee extra.
jonaslb,

Ottimo lavoro e felice che abbia funzionato!
George Udosen,
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.