由于网络发生变化,我们的一台打印机有了新的 IP。今天,一位用户向我提出了以下问题:“我无法从 Linux 打印。” IP 是在一个月前更改的,显然我们很少从“Linux”进行打印。除此之外,我想进入 cups 并更改 IP 地址,但在继续之前,我想知道当前的设置。
当从 cups Web 界面“修改”打印机时,我基本上可以更改除名称之外的所有内容,而我所需要做的只是更改 IP 地址。我不会太担心,但这是一台没有原生驱动程序的戴尔 5210n。它确实适用于现在正在使用的任何 ppd 文件,但我不想通过反复试验来弄清楚它正在使用什么。所以我的问题如下:
有没有办法(命令行或 GUI)来查看此特定打印机的当前设置?
我可以只更改 IP 地址而不必选择打印机类型吗(5210n 不是通过修改打印机提供的选项)?
我可以使用现有的 ppd 文件来使用适当的 IP 地址创建新队列吗?
有一个更好的方法吗?
相关信息是网络连接的 Dell 5210n,运行 RHEL 4 update 3 和该版本的 cups 的 Dell 服务器上。
答案1
您可以从命令行使用以下命令查看已安装的打印机:
lpinfo -v
您可以像这样更改配置:
lpadmin -p <printer name> <options>
您可能对更改设备 uri 感兴趣。这应该包含 IP 地址。像这样更改它:
lpadmin -p <printer name> -v <new uri>
打印机配置存储在 /etc/cups/printers.conf 中。您也可以在其中查看当前配置。有关详细信息,请参阅此处的 CUPS 文档:
http://www.cups.org/documentation.php/doc-1.4/ref-printers-conf.html
答案2
我知道我是在发帖,但是,我多次遇到过同样的问题,我很想看到有人回答。我在 Red Hat Enterprise Linux 5 上有 CUPS 服务器,我担心只想更改 URI 但被迫通过驱动程序面板的情况非常愚蠢。如果我只想更改 IP 地址,为什么要冒着破坏打印机驱动程序的风险?
使用 lpadmin -p -v 非常棒,但这应该可以从 GUI 持续工作...如果我可以从 CLI 执行此操作,我应该只能从 GUI 更改 URI。
无论如何,printer.conf 配置文件不包含有关正在使用哪个现有 PPD 的信息。但是,我的系统上有一个名为 /etc/cups/ppd/ 的目录,该目录中有每个使用的现有 PPD 文件的副本。它们都以队列名称重命名。因此,“Queue1”打印机的当前 PPD 驱动程序位于 /etc/cups/ppd/Queue1.ppd。
但是它是从哪里来的呢?GUI 如此神秘地要求的相应品牌/型号是什么?为此,我在 /usr/share/cups/model/ 找到了一个目录,其中有一堆名为 *.ppd.gz 的文件。我相信当您从 GUI 中选择品牌和型号时,gzip 副本将被解压缩并复制到 /etc/cups/pdd/Queue1.ppd。
就我而言,我将它们全部复制到我的主目录并将它们全部解压缩。
$ for file in $(ls *.gz); 执行 gunzip $file; 完成
并开始将 /usr/share/cups/model/ 中的结果文件与 /etc/cups/ppd 中当前正在使用的文件进行比较。
对我来说,什么都不符合。所以我又回到了原点。
我现在只能假设配置这些队列的人使用了“或提供 PPD 文件:”上传链接,并提供了第三方 PPD 文件,当然,多年后我不知道它在哪里。
因此,最安全的做法是:
1) 从 /etc/cups/ppd 获取当前 ppd 的副本并通过 GUI 重新上传 2) 放弃 GUI 并使用 lpadmin -p -v 3) 放弃 GUI 并修改 /etc/cups/printers.conf 文件中 DeviceURI 设置中的 IP,然后使用 sudo /sbin/service cups restart 重新启动 cups
无论如何,将 GUI 设计成这样一种愚蠢的做法,让我们冒着无意更改驱动程序的风险。希望这个问题在 CUPS 的最新版本中得到修复... 在 Red Hat Enterprise Linux 5 上,我的 cups 版本是 1.3.7。