【问题标题】:Unable to check cups printer status in Debian Squeeze无法在 Debian Squeeze 中检查杯子打印机状态
【发布时间】:2011-01-28 11:55:19
【问题描述】:
对不起我的英语!
我正在使用 Debian 挤压和分配,我创建了 2 个虚拟 pdf cups 打印机。两者都工作得很好。
测试不同的管理命令;我尝试禁用其中一台打印机并将他的队列文件移动到第二台。我可以轻松做到。
现在,我想编写一个 bash 脚本来测试打印机的状态。因此,如果打印机被禁用,它只执行“移动”脚本。
有没有办法知道杯子打印机的状态并在脚本中使用该信息?
例如,可以返回“O”的命令/函数是启用杯子打印机,否则返回“1”。
感谢您的帮助,
【问题讨论】:
标签:
linux
bash
printing
cups
【解决方案1】:
正如 Andrei 所提到的,您应该能够使用 lpstat 命令来处理这个问题。具体来说,尝试解析以下输出:
lpstat -p
在正常情况下,你会得到类似的东西:
printer HP_DESKJET_940C is idle. enabled since Mon 09 Aug 2010 10:42:20 PM CDT
printer HP_LaserJet_1012 is idle. enabled since Mon 09 Aug 2010 10:36:26 PM CDT
当其中一台打印机出现问题时,“空闲”文本会发生变化。我建议您使用虚拟打印机的状态,直到获得所需的输出。对于你的 bash 脚本,也许你想要这样的东西:
lpstat -p | grep -E 'HP_DESKJET.*\(idle|printing\)' >/dev/null || false
这一系列命令会测试你的打印机是处于空闲还是打印状态,如果不是,那么它会产生一个退出码1。否则,它会产生一个退出码0。当然,您需要根据项目的需要调整打印机的名称和可用状态。