如何通过API向docker部署的CUPS服务批量添加指定驱动的打印机
CUPS批量添加打印机实现方案
完全可以实现批量添加需求,CUPS提供了两种稳定的实现路径,docker环境下和原生CUPS服务的操作逻辑完全一致:
方案1:调用CUPS原生HTTP API
CUPS的管理接口基于IPP协议封装,无需额外安装依赖,直接调用即可:
- 接口地址为
POST http://{你的CUPS服务地址}/admin,请求头需要携带Basic认证信息,账号密码为你部署docker CUPS时设置的管理员账号 - 请求必填参数如下:
op:固定值config-printerprinter-name:自定义的打印机唯一标识名称printer-uri:打印机的设备连接地址,例socket://192.168.1.20:9100printer-make-and-model:指定驱动的完整名称,可提前在CUPS容器内执行lpinfo -m查询所有可用驱动的准确字符串printer-is-shared:布尔值,控制该打印机是否对外共享
- 批量操作只需要将所有打印机的配置整理为列表,通过脚本循环发送请求即可,可自行添加失败重试、结果校验逻辑。
方案2:容器内执行lpadmin命令(更适合docker场景,操作更简单)
如果不需要通过远程调用的方式添加,直接在CUPS容器内批量执行命令效率更高:
- 先整理所有打印机的配置清单,每行包含「打印机名称、设备URI、驱动名称」三个字段,可存为csv或者纯文本文件
- 编写shell脚本循环执行添加命令,单台打印机的添加模板为:
lpadmin -p {打印机名称} -E -v {设备URI} -m {驱动完整名称}
- 可将配置文件和脚本直接挂载到docker容器内执行,也可以将该步骤写入Dockerfile或者docker-compose的启动命令中,后续容器重建时会自动完成打印机添加,无需重复操作。
- 全部执行完成后,执行
lpstat -p即可校验所有打印机是否添加成功。
注意:两种方案执行前都需要提前确认指定驱动已经正确安装到CUPS容器内,执行
lpinfo -m | grep {驱动关键词}确认驱动存在后再操作,否则会添加失败。
内容的提问来源于stack exchange,提问作者Victor Semenov
相关产品推荐
相关产品推荐

