使用 Windows 共享打印是做什么的
信创终端迁移过程中,原有打印机常挂在 Windows 服务器或同事的机器上共享,短时间内无法全部更换。Linux 侧通过 CUPS 添加 smb:// 队列即可直接打印该共享打印机,实现方式是客户端把打印任务通过 SMB 协议投递到共享主机。这属于迁移期的过渡方案,依赖 samba 客户端组件与 Windows 端的共享及打印授权。
基本信息
| 依赖组件 | cups 与 samba-client |
|---|---|
| 队列地址 | smb://<主机IP或主机名>/<共享名> |
| 添加命令 | lpadmin -p 队列名 -E -v smb://... -m everywhere |
| 凭据 | 需要账号的共享在 CUPS 中配置认证信息 |
| 验证命令 | lpstat -p 队列名、lp -d 队列名 测试文件 |
典型使用场景
- 迁移期先用现有共享打印机满足办公需求,等打印设备统一更换后再切换为网络打印
- 共享印量集中在一台 Windows 主机上,信创终端通过该主机转发打印任务
- 临时办公点没有独立网络打印机,借用邻近部门的共享设备
- 测试阶段快速验证打印链路是否通,不需要提前配置驱动
- 排障时对比同一共享在 Windows 与信创终端上的差异,定位问题在哪一侧
- 迁移调研阶段统计哪些打印机暂无适配驱动,需要走共享过渡
添加 SMB 打印队列
添加 SMB 打印队列
dnf install -y cups samba-client # 或 apt install cups smbclient
systemctl enable --now cups
lpstat -p # 查看现有队列
# 共享地址形如 smb://10.0.0.5/HP-M401
lpadmin -p Win-M401 -E -v smb://10.0.0.5/HP-M401 -m everywhere
lpoptions -p Win-M401 -o auth-info-required=username,password # 需要账号的共享
lpstat -p Win-M401 # 确认队列已就绪
lp -d Win-M401 /usr/share/cups/data/testprint # 打印测试页
cancel -a Win-M401 # 卡任务时清空队列常见故障对照
| 现象 | 常见原因 | 处理方向 |
|---|---|---|
| 队列创建失败 | smb 协议未安装或地址写错 | 确认 samba-client 已装、共享名大小写一致 |
| 任务一直排队 | Windows 端未开打印权限 | 共享权限与打印权限是两套,两个都要开 |
| 提示认证失败 | 缺凭据或口令过期 | 在 CUPS 中配置认证信息并核对系统时间 |
| 任务卡死不动 | 队列有异常任务阻塞 | cancel -a 清队列后重试 |
| 打印乱码或空白 | 驱动或页面描述不匹配 | 改用合适的打印模型或由服务端渲染 |
排查打印问题先看服务端日志 /var/log/cups/error_log,再确认 Windows 侧的共享与安全设置;跨系统打印问题时,明确是哪一侧拒绝通常比反复重建队列有效得多。
需要账号的共享要把凭据交给 CUPS 保存,注意该凭据的权限与轮换;匿名共享虽方便但审计困难,生产环境建议统一使用专门打印账号。