如何刪除數百個自動新增的網路印表機?

如何刪除數百個自動新增的網路印表機?

對我來說執行列印非常困難,因為印表機對話框充滿了數百個自動添加的印表機,所以我找不到我想要使用的印表機,請參見下面的螢幕截圖。

顯示很長捲軸的印表機對話方塊影像

這些印表機來自我的工作網絡,顯然很多人(我猜包括學生)都在「共用」他們的家用印表機,然後我的筆記型電腦會自動拾取這些印表機。 (巧合的是,我有時會在工作中停用 avahi-daemon,只是因為它使用了大量的 CPU)。

當我訪問 時http://localhost:631/printers/,它顯示有 131 台印表機,並且它們的品牌和型號均為「本地原始印表機」。但有兩個例外: 1 是我手動設定的正在工作的網路印表機。另一個是我父母的網路印表機,它也是自動添加的,我現在與它位於同一網路上。但其餘的只是我真正想避免的垃圾。有關如何做到這一點的提示將不勝感激。

不過,我暫時不會回到工作地點,所以現在,我只想刪除這些印表機(即 129/130 自動新增的印表機)。有沒有辦法做到這一點?我想我可以透過點擊 cups 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'
    

相關內容