创建打印机接口脚本
如果您的打印机不能通过在 terminfo 数据库中添加一个条目来支持,或者如果 /etc/lp/model 文件中提供的 standard 或其他接口脚本不支持您的打印需求,您可以创建自己的打印机接口脚本。
要创建一个定制接口脚本,请执行下列操作:
向管理员提醒打印机故障的一种方法是以代码 129 退出。 不幸的是,如果接口脚本退出,当错误清除以后,打印服务会从头开始重新打印该打印作业。 要在不重新打印整个作业的情况下向管理员发出警告,请指定接口脚本向打印服务发送一个故障消息,但是它要等待直到故障清除。 当故障清除以后,接口脚本将继续打印该作业。 当作业打印完毕以后,接口脚本可以以零退出,就像从未发生故障一样。 另一个优点是接口脚本可以自动检测故障何时清除,这样管理员就不必重新启动打印机。
要指定将故障消息发送到打印服务,请使用 lp.tell 命令。 standard 打印机接口代码使用 LPTELL shell 变量调用 lp.tell 命令。 lp.tell 程序将它的标准输入发送到打印服务。 打印服务将该该消息作为警告转发给管理员。 如果它的标准输入为空,那么 lp.tell 不会初始化警告。 检查紧跟在 standard 接口脚本中的这些注释后面的代码,以获取如何使用 lp.tell(LPTELL)程序的示例:
# Here's where we set up the $LPTELL program to capture
# fault messages.
#
# Here's where we print the file.对于特殊退出代码 129 或 lp.tell,接口脚本不需要禁用打印机本身。 您的接口脚本可以直接禁用打印机,但是这样做会覆盖故障报警机制。 只有当打印服务检测到打印机故障时才发送警告, 而特殊退出代码和 lp.tell 程序是它的主要检测工具。
如果打印服务必须随时中断文件的打印,那么它将使用信号 15 来终止接口脚本 (请参阅 signal 命令和 kill 命令以获取更多信息)。
如果接口脚本因为收到任何其他信号而停止,那么打印服务会假设以后的打印作业不受影响并继续使用打印机。 打印服务会通知提交打印作业的人,作业未成功完成。
当调用接口时,信号 SIGHUP 、SIGINT、SIGQUI 和 SIGPIP(陷阱编号 1、2、3 和 13)被忽略。 standard 接口脚本更改它以在适当的时间捕获这些信号、解释这些信号来说明打印机有问题,并发出故障消息。