Como removo centenas de impressoras de rede adicionadas automaticamente?

16

É muito difícil executar a impressão, porque o diálogo da impressora está cheio de centenas de impressoras adicionadas automaticamente, por isso não encontro a que quero usar, veja a captura de tela abaixo.

Imagem do diálogo da impressora mostrando uma barra de rolagem muito longa

As impressoras provêm da minha rede de trabalho, onde aparentemente muitas pessoas (incluindo os alunos, eu acho) estão "compartilhando" suas impressoras domésticas, que meu laptop pega automaticamente. (por coincidência, às vezes desabilito o avahi-daemon no trabalho, simplesmente porque ele está usando uma grande quantidade de CPU).

Quando vou http://localhost:631/printers/, diz que existem 131 impressoras e todas elas são da Make and Model 'Local Raw Printer'. Com duas exceções: 1 é uma impressora de rede no trabalho que eu configurei manualmente. Outra é uma impressora de rede na casa dos meus pais, que também foi adicionada automaticamente e que eu estou na mesma rede que agora. Mas o resto são apenas lixo que eu realmente gostaria de evitar. Dicas sobre como fazer isso seriam apreciadas.

Não voltarei ao meu local de trabalho por um tempo, embora, por enquanto, eu gostaria que essas impressoras (que seriam as impressoras adicionadas automaticamente 129/130) fossem removidas. Existe uma maneira de fazer isso? Acho que poderia fazê-lo clicando na interface da web cups, mas para 129 impressoras, isso é um pouco demais. Então, estou procurando um único comando ou dicas sobre como alcançá-lo com um tipo de script.

jonaslb
fonte
11
veja /etc/cups/printers.conf. pare os copos e remova as impressoras do arquivo.
Rinzwind 30/05/19
2
Não é uma duplicata porque estou perguntando como remover impressoras já instaladas, enquanto essa outra pergunta é sobre como impedir sua instalação. Além disso, é uma pergunta que tem uma bagunça quente de respostas desatualizadas que não funcionam. Eu sei disso porque eu já vi isso antes e tentei alguns deles.
Jonaslb # 30/19
11
Entendida, retraído :)
NGRhodes

Respostas:

13

Usando este comando: lpstat -apodemos ver as impressoras instaladas e identificar o nome da impressora desejada para manter, podemos usar o grepcomando também para filtrar os resultados da seguinte forma: lpstat -a | grep <probable_name_of_printer>.

Então este pequeno script pode ajudar:

  1. Execute este comando para verificar se a impressora desejada não está listada:

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • Isso não deve retornar nada, pois faz o seguinte:

      • lpstat -a: lista de impressoras instaladas
      • cut -d" " -f1: retorna apenas os nomes das impressoras
      • sed -E '/<NAME_OF_PRINTER>/d': remova o nome da impressora para evitar a saída dos comandos anteriores
      • grep <NAME_OF_PRINTER>: verifique se a impressora desejada não está na lista
  2. Se o acima indicado verificar; em seguida, execute este comando para remover todas as outras impressoras que você não precisa:

    sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'
    
George Udosen
fonte
Isso parece promissor. Acho que pode haver um problema (com o comando de listagem, presumivelmente também o último comando). lpstat -aresulta em <printer_name> not accepting request since <some date> -\n reason unknown(com reason unknownem uma nova linha!). Então, usando o seu comando de listagem, recebo muitas "impressoras" denominadas `reason` (há um recuo).
Jonaslb # 30/19
Qual parte das etapas você está tendo problemas e adicione resultados à sua pergunta para que eu possa seguir! O que o comando lpstat -alhe dá?
George Udosen
11
Funcionou bem, mas adicionei outro sedcomando na "cadeia de tubulação": sed -E /reason/dlivrar-se das linhas extras.
Jonaslb # 30/19
Ótimo trabalho e feliz que funcionou!
George Udosen