自動的に追加された数百のネットワーク プリンターを削除するにはどうすればよいですか?

自動的に追加された数百のネットワーク プリンターを削除するにはどうすればよいですか?

プリンターダイアログには自動的に追加された何百ものプリンターが表示され、使用したいプリンターが見つからないため、印刷を実行するのが非常に困難です。下のスクリーンショットを参照してください。

非常に長いスクロールバーが表示されたプリンターダイアログの画像

プリンターは私の職場のネットワークから来ており、どうやら多くの人々 (学生も含む) が自宅のプリンターを「共有」しており、私のラップトップはそれを自動的に拾います。 (偶然にも、私は職場で avahi-daemon を無効にすることがあります。これは単に CPU を大量に使用しているからです)。

にアクセスするとhttp://localhost:631/printers/、プリンターが 131 台あり、それらはすべて「Local Raw Printer」というメーカーとモデルのプリンターであると表示されます。ただし、2 つの例外があります。1 つは、手動で設定した職場のネットワーク プリンターです。もう 1 つは、自動的に追加された実家のネットワーク プリンターで、現在同じネットワークに接続しています。ただし、残りは、本当に避けたいゴミです。その方法についてのヒントがあれば幸いです。

ただし、しばらくは職場に戻らないので、今のところは、これらのプリンター (自動的に追加された 129/130 台のプリンター) を削除したいだけです。これを行う方法はありますか? CUP の Web インターフェイスでクリックして実行できると思いますが、プリンターが 129 台の場合は、それは少し多すぎます。そのため、単一のコマンドまたはスクリプトのようなものでそれを実現する方法に関するヒントを探しています。

答え1

このコマンドを使用すると、lpstat -aインストールされているプリンターを確認し、保持するプリンターの名前を識別できます。grepまた、このコマンドを使用して、次のように結果をフィルター処理することもできますlpstat -a | grep <probable_name_of_printer>

そんなときは、この小さなスクリプトが役に立ちます:

  1. 次のコマンドを実行して、目的のプリンターがリストにないことを確認します。

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • これは次のことを実行するため、何も返さないはずです。

      • lpstat -a: インストールされているプリンタを一覧表示
      • cut -d" " -f1: プリンタの名前のみを返す
      • sed -E '/<NAME_OF_PRINTER>/d': 前のコマンドの出力から保持するプリンタの名前を削除します
      • grep <NAME_OF_PRINTER>: 目的のプリンターがリストにないことを確認してください
  2. 上記の内容が正しければ、次のコマンドを実行して、不要な他のすべてのプリンターを削除します。

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

関連情報