对于我来说,执行打印非常困难,因为打印机对话框中充满了数百台自动添加的打印机,所以我找不到我想要使用的打印机,请参见下面的屏幕截图。
这些打印机来自我的工作网络,显然很多人(我想也包括学生)都在“共享”他们的家用打印机,然后我的笔记本电脑就会自动获取这些打印机。(巧合的是,我有时会在工作时禁用 avahi-daemon,只是因为它使用了大量的 CPU)。
当我进入时http://localhost:631/printers/
,它显示有 131 台打印机,它们的品牌和型号均为“本地原始打印机”。但有两个例外:1 台是我手动配置的办公室网络打印机。另一台是我父母家的网络打印机,也是自动添加的,我现在与它在同一个网络上。但其余的都是垃圾,我真的想避免。如果能提供一些关于如何做到这一点的提示,我将不胜感激。
不过,我暂时不会回到我的工作地点,所以现在,我只想删除这些打印机(即自动添加的 129/130 台打印机)。有办法吗?我想我可以通过点击 cups 网络界面来完成,但对于 129 台打印机来说,这有点太多了。所以我正在寻找一个命令或有关如何使用某种脚本实现它的提示。
答案1
使用此命令:lpstat -a
我们可以看到已安装的打印机并确定要保留的打印机的名称,我们grep
也可以使用该命令来过滤结果,如下所示:lpstat -a | grep <probable_name_of_printer>
。
那么这个小脚本可以提供帮助:
运行此命令来检查所需的打印机是否未列出:
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>
:确保所需打印机不在列表中
如果上述检查无误,则运行此命令来删除所有不需要的其他打印机:
sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'