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


16

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

非常に長いスクロールバーを示すプリンターダイアログの画像

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

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

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


1
/etc/cups/printers.confを参照してください。cupsを停止してから、ファイルからプリンターを削除します。
リンツウィンド

2
既にインストールされているプリンターを削除する方法を尋ねているので、重複していませんが、他の質問はそれらのインストールを防ぐことです。また、それはうまくいかない時代遅れの答えのホット混乱を持っている質問です。これを知っているのは、以前に見たことがあり、いくつか試してみたからです。
ジョナスルブ

1
理解、撤回:)
NGRhodes

回答:


13

このコマンドを使用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'
    

これは有望に見えます。しかし、問題があるかもしれないと思います(リストコマンドにはおそらく最後のコマンドも含まれます)。lpstat -a結果は<printer_name> not accepting request since <some date> -\n reason unknownreason unknown新しい行に!)。リストコマンドを使用して、 `reason`という名前の「プリンター」をたくさん取得します(インデントがあります)。
ジョナスルブ

手順のどの部分に問題があるのか​​、質問に結果を追加してください。このコマンドは何をlpstat -a提供しますか?
ジョージウドセン

1
うまくいきましたsedが、「パイプチェーン」に別のコマンドを追加しましたsed -E /reason/d。余分な行を削除するためです。
ジョナルスブ

すばらしい仕事でした。
ジョージウドセン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.