2010-03-03 13:25:43 +0000 2010-03-03 13:25:43 +0000
47
47

如何从命令行恢复CUPS打印机?

我在CUPS里有一台打印机,由于驱动程序的问题(HP 1010),它时常会进入暂停状态,我想写一个shell脚本,每小时执行一次,恢复CUPS里的打印机。

我想写一个shell脚本,每小时执行一次来恢复CUPS中的打印机。但我在网上查了好几分钟,也不知道如何从shell命令行恢复打印机,我想写一个每小时执行一次的shell脚本,来恢复CUPS中的打印机。

答案 (9)

68
68
68
2010-03-03 16:36:51 +0000

有cupsenable命令。

cupsenable printer

启动被禁用的打印机(要知道打印名,你可以用lpstat -plpc status列出你的打印机)。

你可能必须以root身份或通过sudo运行该命令。因此,如果你必须在 shell 脚本中启用打印机,你必须将 shell 添加到 root 的 crontab 中,或者编辑你的 sudoers 文件。

6
6
6
2012-10-10 07:42:50 +0000

我的打印机是HP CP1215也出现了错误。 Printer Paused - “/usr/lib/cups/backend/hp failed”

在重启cupsavahi-daemon,并用lpstat -p识别打印机,并用cupsenable启用后,我又可以打印了。只重启cups并启用并没有起到作用。

我还将默认策略改为重试作业,最后用cronjob避免了以后出错:

* * * * * lpstat -p |grep "poissa käytöstä" && service avahi-daemon restart; service cups restart; cupsenable HP_Tuloostin

其中poissa käytöstä是维护 “出错 "的芬兰本地化文本,HP_Tuloostin是我的打印机名称。

根据我的经验,默认策略和当前打印机策略都应该配置为重试作业。默认策略是安装新打印机时得到的策略。

2
2
2
2014-01-27 18:33:06 +0000
ls /etc/cups/ppd/ |cut -d "." -f1 |grep -v VMware |xargs -i cupsenable {}

这将列出所有代表已安装打印机的ppd文件,切断ppd扩展名,忽略很多VMware服务器上包含的VMware ppd(如果你不需要这个,只需删除|grep -v VMware),并将其他名称传递给xargs,从而解除所有打印机的pauses。

一个cron作业应该可以很好地工作。

1
1
1
2015-08-25 10:30:16 +0000

如果问题是由于GUI需要登录才能恢复打印机,那么另一个解决方案是允许通过GUI恢复打印机而无需登录。要做到这一点,请关闭Cups并编辑这行sudo vi /etc/cups/cupsd.conf

<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel- Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>

并删除Resume-Printer指令,然后重新启动cups。如果该指令出现在多个<Limit>部分,那么您可以从相关的<Policy>部分删除它,或者从所有部分删除。现在你应该可以恢复打印机,而无需从GUI登录。我在macworld上看到这个,但它适用于任何杯子的安装。

1
1
1
2015-09-07 12:14:32 +0000

上面Janne的答案,比如这个。

* * * * * lpstat -p |grep "poissa käytöstä" && service avahi-daemon restart; service cups restart; cupsenable HP_Tuloostin

… 会导致CUPS每分钟重启一次 不管任何打印机处于何种状态 这是因为cups重启子句没有与&&搭配。

下面是一个简短的BASH脚本,我用来使CUPS在检测到故障状态时重启是有条件的。

#!/bin/bash

DATE=$(date)
DS40=$(/usr/bin/lpstat -p |grep "DS40" |grep "disabled")

if [! -z "${DS40}"]; then
    echo "${DATE} - Restarted avahi and cups" >> /var/log/cups/restart-cron-tim.log
    /usr/sbin/service avahi-daemon restart
    /usr/sbin/service cups restart
    /usr/sbin/cupsenable Dai_Nippon_Printing_DS40
fi

将 “DS40 "替换为你要查找的打印机状态,将 "disabled "替换为你语言中lpstat -p的输出。

0
0
0
2016-10-08 23:57:22 +0000

这里的很多解决方案对我来说都不适用,(例如:sudo cupsenable和lpadmin -E)。

如果你使用的是Debian 8.6,Cinnamon 2.2.16 (Linux),请从GUI开始菜单中进行操作。

Click Administration | Print Settings,
Then select your stalled CUPS printer,
Click Unlock (and give it your admin password),
Click Server | Settings,
In this click the blue "Problems?" link.

对于Ubuntu 16.04:

Click System Settings | Printers,
Then Server | Settings,
Click the blue "Problems?" link.

这将打开打印故障排除程序。它将告诉你下一步该怎么做。

也许你只需要在打印设置中检查CUPS打印机的Enabled属性。你需要先解锁)。

最后,为了避免这种情况再次发生,在上面提到的打印机设置中,将打印机的 “策略 "改为 "retry-job"(在属性|策略下)。

帮我解决了这个问题!

导致这个问题的原因:如果我的wifi打印机在打印到CUPS PRINTER时关闭了电源,而我的策略是 "停止打印机",那么我就会收到一条消息,说我无法打印,而且打印机被禁用了(Enabled是未选中的)。只有当策略设置为 "重试作业 "时,Enabled才不会被取消勾选。打印机重新启动几分钟后,您的作业就会开始打印。

(我的其他帖子中提到了这个问题。)

0
0
0
2018-11-03 18:15:11 +0000

我也曾遇到过同样的CUPS废话。我的解决方法是每隔n分钟运行一个systemd脚本。

/usr/local/cups/enable/cups/printers.sh

#!/bin/sh
for printer in $(lpstat -v | perl -pe 's/device for ([A-Za-z0-9_]+):.*//g')
do
    echo "Forcely enabling printer: $printer"
    # Enable:-E PrinterId:-p
    /usr/bin/lpadmin -E -p "$printer"
done

cups.enable.printers.service

[Unit]
Description = Forcely enable printer occassionally. Why CUPS disables printers in the first place has yet to be determined.

[Service]
Type = simple
ExecStart = /usr/local/cups/enable_cups_printers.sh

[Install]
WantedBy = multi-user.wants

cups.enable.printers.timer

[Unit]
Description=Run enable printers frequently to ensure connection difficulties are remedied.

[Timer]
OnBootSec=15min
OnUnitActiveSec=300

[Install]
WantedBy = timers.target
0
0
0
2012-02-13 10:28:39 +0000

lpadmin -p p-go-avtom2 -v p-go-avtom2 -E 来源

-1
-1
-1
2010-04-12 11:16:08 +0000

正如其他人所说,"cupsenable “或 "lpadmin -E "应该可以解决这个问题。

一个相关的问题是,CUPS默认配置打印机,如果打印任务失败,打印机就会被禁用。你可以更改这个配置,以中止打印任务。