如何监控和复制 CUPS 假脱机数据以及复制文件以运行脚本?

如何监控和复制 CUPS 假脱机数据以及复制文件以运行脚本?

普遍问题:以普通用户身份访问 cups spool 数据

在商店的销售台,我们有一个软件可以将账单生成为 PDF 文件,收银员会将其打印给客户。我无法访问生成这些 PDF 文件的数据库。但是,我编写了一个解析脚本(使用 pdftotext 和 awk)将它们转换为 .csv,然后我可以使用它来按每种产品交付类型和仓库进行整理,以创建领料清单。

我想在每张账单打印后立即运行一个脚本,将副本发送到相应的仓库。

初步计划:

经过一番谷歌搜索后,我想到使用incrond/incrontab(inotify)监控打印机活动并触发我自己的脚本来处理每张账单。在以下问题中,我找到了有关 cups spool 的信息: Cups 将打印作业信息保存在哪里?,并且在CUPS - 将所有打印作业的副本输出为 PDF,我发现 /var/spool/cups 中的数据“按原样”存储,随时可以复制和处理;但我不知道如何监视此文件夹或复制数据——我只能以超级用户身份看到它。我正在运行 Debian 11。我对权限问题感到困惑,不知道该怎么做。

我是否应以 root 身份使用 incrond 来监控 /var/spool/cups?如果是,我如何将新的打印作业复制到我的普通用户可以读取的地方?

(欢迎框架挑战,尽管我已经有点了解这个内部业务)。

答案1

你的方法存在缺陷,因为文件可能会在脚本运行时消失,这变得不可靠。如果你仍然想坚持初步计划,你应该从 CUPS 正在运行的同一用户运行脚本。这通常是 root,所以是的,你应该从 root 运行它。

更好的方法是修改打印文档的路径,例如:

您可以在 ppd 文件中添加自定义过滤器,它将是一个动态转换打印文件的脚本。自定义过滤器说明

您可以指定新打印机,例如 PDF 打印机。所有文档都将以 PDF 格式保存在指定文件夹中,因此您可以监视该文件夹,复制它,然后通过LP命令。

您还可以使用特定的后端,例如 Tea4CUPS。可以找到此方法和其他一些方法这里

相关内容