Comment supprimer des centaines d'imprimantes réseau ajoutées automatiquement?

16

Il m'est très difficile d'effectuer l'impression, car la boîte de dialogue de l'imprimante est remplie de centaines d'imprimantes ajoutées automatiquement, donc je ne trouve pas celle que je veux utiliser, voir capture d'écran ci-dessous.

Image de la boîte de dialogue de l'imprimante montrant une très longue barre de défilement

Les imprimantes proviennent de mon réseau de travail, où apparemment beaucoup de gens (y compris les étudiants, je suppose) "partagent" leurs imprimantes personnelles, que mon ordinateur portable récupère ensuite automatiquement. (par coïncidence, je désactive parfois le démon avahi au travail, simplement parce qu'il utilise une grande quantité de CPU).

Quand je vais à http://localhost:631/printers/, il dit qu'il y a 131 imprimantes, et elles sont toutes de la marque et du modèle «imprimante brute locale». À deux exceptions près: 1 est une imprimante réseau au travail que j'ai configurée manuellement. Une autre est une imprimante réseau chez mes parents, qui a également été ajoutée automatiquement et que je suis sur le même réseau que maintenant. Mais le reste n'est que des ordures que j'aimerais vraiment éviter. Des conseils sur la façon de procéder seraient appréciés.

Je ne retournerai pas à mon lieu de travail pendant un certain temps, donc pour l'instant, je voudrais juste que ces imprimantes (ce serait les imprimantes 129/130 ajoutées automatiquement) soient supprimées. Y-a-t-il un moyen de faire ça? Je suppose que je pourrais le faire en cliquant dans l'interface Web de cups, mais pour 129 imprimantes, c'est un peu trop. Je suis donc à la recherche d'une seule commande ou de conseils sur la façon d'y parvenir avec une sorte de script.

jonaslb
la source
1
voir /etc/cups/printers.conf. arrêter les tasses, puis retirer les imprimantes du fichier.
Rinzwind
2
Ce n'est pas un doublon car je demande comment supprimer les imprimantes déjà installées, alors que cette autre question concerne la prévention de leur installation. En outre, c'est une question qui a un désordre chaud de réponses obsolètes qui ne fonctionnent pas. Je le sais parce que je l'ai déjà vu et essayé une partie.
jonaslb
1
Compris, rétracté :)
NGRhodes

Réponses:

12

En utilisant cette commande: lpstat -anous pouvons voir les imprimantes installées et identifier le nom de l'imprimante souhaité conserver, nous pouvons utiliser la grepcommande également pour filtrer les résultats comme ceci: lpstat -a | grep <probable_name_of_printer>.

Ensuite, ce petit script peut vous aider:

  1. Exécutez cette commande pour vérifier que l'imprimante souhaitée n'est pas répertoriée:

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • Cela ne devrait rien retourner car il fait ce qui suit:

      • lpstat -a: liste des imprimantes installées
      • cut -d" " -f1: retourne uniquement les noms des imprimantes
      • sed -E '/<NAME_OF_PRINTER>/d': supprime le nom de l'imprimante à conserver de la sortie des commandes précédentes
      • grep <NAME_OF_PRINTER>: assurez-vous que l'imprimante souhaitée ne figure pas dans la liste
  2. Si ce qui précède vérifie; puis exécutez cette commande pour supprimer toutes les autres imprimantes dont vous n'avez pas besoin:

    sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'
    
George Udosen
la source
Cela semble prometteur. Je pense qu'il pourrait y avoir un problème (avec la commande de listage donc probablement aussi la dernière commande). lpstat -arésulte en <printer_name> not accepting request since <some date> -\n reason unknown(avec reason unknownsur une nouvelle ligne!). Donc, en utilisant votre commande de listage, je reçois beaucoup d '"imprimantes" nommées "raison" (il y a une indentation).
jonaslb
Veuillez indiquer quelle partie des étapes rencontrez des problèmes et ajoutez des résultats à votre question afin que je puisse suivre! Que vous donne la commande lpstat -a?
George Udosen
1
Cela a bien fonctionné, mais j'ai ajouté une autre sedcommande dans la "chaîne de tuyaux": sed -E /reason/dse débarrasser des lignes supplémentaires.
jonaslb
Excellent travail et heureux que cela ait fonctionné!
George Udosen