web-dev-qa-db-ja.com

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

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

Image of printer dialogue showing a very long scroll bar

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

http://localhost:631/printers/に行くと、131台のプリンターがあり、それらはすべてMakeおよびModelの「ローカルRawプリンター」です。 2つの例外を除いて、1つは私が手動で構成した作業中のネットワークプリンターです。もう1つは、両親のネットワークプリンターです。これも自動的に追加され、現在と同じネットワーク上にいます。しかし、残りは私が本当に避けたいゴミです。それを行う方法のヒントをいただければ幸いです。

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

18
jonaslb

このコマンドの使用: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'
    
14
George Udosen