如何删除数百台自动添加的网络打印机?

如何删除数百台自动添加的网络打印机?

对于我来说,执行打印非常困难,因为打印机对话框中充满了数百台自动添加的打印机,所以我找不到我想要使用的打印机,请参见下面的屏幕截图。

打印机对话框的图像显示了很长的滚动条

这些打印机来自我的工作网络,显然很多人(我想也包括学生)都在“共享”他们的家用打印机,然后我的笔记本电脑就会自动获取这些打印机。(巧合的是,我有时会在工作时禁用 avahi-daemon,只是因为它使用了大量的 CPU)。

当我进入时http://localhost:631/printers/,它显示有 131 台打印机,它们的品牌和型号均为“本地原始打印机”。但有两个例外:1 台是我手动配置的办公室网络打印机。另一台是我父母家的网络打印机,也是自动添加的,我现在与它在同一个网络上。但其余的都是垃圾,我真的想避免。如果能提供一些关于如何做到这一点的提示,我将不胜感激。

不过,我暂时不会回到我的工作地点,所以现在,我只想删除这些打印机(即自动添加的 129/130 台打印机)。有办法吗?我想我可以通过点击 cups 网络界面来完成,但对于 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'
    

相关内容