一、简介
CUPS(Common UNIX Printing System,通用UNIX打印系统)是一个开源的、模块化的打印系统,用于类UNIX操作系统。它最初由Easy Software Products开发,现在由苹果公司维护,已成为Linux和macOS等系统的标准打印架构。
CUPS基于Internet打印协议(IPP),提供了一系列工具和管理界面,支持:
- 本地和网络打印
- 打印机发现和共享
- 打印队列管理
- 用户权限控制
二、CUPS的优势
1. 跨平台兼容性
支持Linux、macOS、UNIX等多种操作系统
2. 标准化协议
基于IPP(Internet Printing Protocol),兼容性更好
3. 网络打印支持
- IPP打印
- LPD/LPR协议
- Samba共享打印
- 蓝牙打印
- 无线打印
4. 驱动程序架构
支持PPD(PostScript Printer Description)文件,兼容大量打印机型号
5. Web管理界面
提供直观的Web配置界面,简化管理操作
三、支持的主流环境
| 操作系统 | 支持情况 | 备注 |
|---|---|---|
| Linux发行版 | 原生支持 | Ubuntu、CentOS、Fedora等默认安装 |
| macOS | 默认打印系统 | 从OS X 10.2开始使用 |
| FreeBSD/OpenBSD | 支持 | 通过ports/pkg安装 |
| Windows | 有限支持 | 通过Samba或IPP客户端 |
四、安装与基本配置
1. 安装CUPS
Ubuntu/Debian:
sudo apt update
sudo apt install cups cups-client cups-bsd
CentOS/RHEL/Fedora:
sudo yum install cups cups-client
# 或
sudo dnf install cups cups-client
启动CUPS服务:
sudo systemctl start cups
sudo systemctl enable cups # 开机自启
2. 访问Web管理界面
默认地址:http://localhost:631
启用远程管理:
sudo cupsctl --remote-any
sudo systemctl restart cups
五、打印机管理实战
1. 列出可用驱动程序
# 查看已安装的PPD文件
lpinfo -m | head -20
# 查看可用的USB打印机
lpinfo -v | grep usb
# 查看网络打印机
lpinfo -v | grep socket
2. 添加本地打印机(USB)
方法一:使用命令行
# 查找打印机URI
lpinfo -v
# 示例输出:usb://Brother/HL-2140 series?serial=0000
# 查找合适的驱动程序
lpinfo -m | grep -i brother
# 添加打印机
sudo lpadmin -p Brother-HL2140 -E \
-v "usb://Brother/HL-2140%20series?serial=0000" \
-m drv:///brother-pt1.drv/brhl2140.ppd
方法二:使用Web界面
- 访问 http://localhost:631/admin
- 点击 “Add Printer”
- 选择USB打印机
- 选择驱动程序或上传PPD文件
3. 添加网络打印机
IPP网络打印机:
sudo lpadmin -p Network-Printer -E \
-v "ipp://192.168.1.100/ipp/print" \
-m everywhere
LPD网络打印机:
sudo lpadmin -p LPD-Printer -E \
-v "lpd://192.168.1.101/queue" \
-m raw
Windows共享打印机(Samba):
sudo lpadmin -p SMB-Printer -E \
-v "smb://username:password@workgroup/printserver/printername" \
-m drv:///sample.drv/generic.ppd
4. 查看和管理打印机
列出所有打印机:
lpstat -p -d
查看打印机状态:
lpstat -p Brother-HL2140
查看打印队列:
lpq -P Brother-HL2140
查看连接协议和URI:
lpstat -v | grep Brother-HL2140
5. 删除打印机
# 禁用并删除打印机
sudo lpadmin -x Brother-HL2140
# 删除打印任务
lprm -
六、配置文件详解
CUPS主要配置文件位于 /etc/cups/:
1. cupsd.conf - 主配置文件
# 监听地址和端口
Listen localhost:631
Listen /var/run/cups/cups.sock
# 允许的网络段
<Location />
Order allow,deny
Allow @LOCAL
</Location>
# Web管理权限
<Location /admin>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow @LOCAL
</Location>
# 日志级别
LogLevel warn
2. printers.conf - 打印机配置
<DefaultPrinter Brother-HL2140>
UUID urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Info Brother HL-2140 Series
Location Office
DeviceURI usb://Brother/HL-2140%20series?serial=0000
State Idle
StateTime 1640995200
ConfigTime 1640995200
Accepting Yes
Shared No
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy retry-job
</Printer>
3. ppd文件目录
/etc/cups/ppd/- 系统PPD文件/usr/share/cups/model/- 驱动程序PPD文件
七、故障排除指南
1. 常见问题诊断
检查服务状态:
systemctl status cups
journalctl -u cups -f # 实时日志
测试打印:
# 测试页
lp -d Brother-HL2140 /usr/share/cups/data/testprint
# 纯文本测试
echo "Test Print" | lp -d Brother-HL2140
2. 常见错误及解决
问题1:权限拒绝
# 解决方案:添加用户到lpadmin组
sudo usermod -aG lpadmin $USER
# 或修改配置文件
sudo cupsctl --user-group=lpadmin
问题2:驱动程序缺失
# 安装附加驱动包
sudo apt install printer-driver-all # Ubuntu
sudo yum install gutenprint-cups # RHEL/CentOS
问题3:网络打印机无法连接
# 测试网络连接
telnet 192.168.1.100 631 # IPP端口
telnet 192.168.1.100 9100 # RAW端口
# 使用ipptool测试
ipptool -t -V 1.0 ipp://192.168.1.100/ipp/print get-printer-attributes.test
3. 调试模式
# 启用调试日志
sudo cupsctl LogLevel=debug2
sudo systemctl restart cups
# 查看详细日志
tail -f /var/log/cups/error_log
八、实用技巧与注意事项
1. 性能优化
# 增加最大客户端数
MaxClients 100
MaxClientsPerHost 50
# 调整缓存大小
CacheDir /var/cache/cups
2. 安全配置
# 限制访问IP
<Location />
Order deny,allow
Deny from all
Allow from 192.168.1.0/24
</Location>
# 启用加密
Listen 0.0.0.0:631
DefaultEncryption Required
3. 备份与恢复
# 备份配置
sudo tar -czf cups-backup.tar.gz /etc/cups /var/spool/cups
# 恢复配置
sudo systemctl stop cups
sudo tar -xzf cups-backup.tar.gz -C /
sudo systemctl start cups
4. 使用脚本自动化
创建打印机自动安装脚本:
#!/bin/bash
# install_printer.sh
PRINTER_NAME="Office-Printer"
PRINTER_URI="ipp://192.168.1.100/ipp/print"
DRIVER="everywhere"
echo "Adding printer: $PRINTER_NAME"
sudo lpadmin -p "$PRINTER_NAME" -E -v "$PRINTER_URI" -m "$DRIVER"
if [ $? -eq 0 ]; then
echo "Printer added successfully"
echo "Setting as default"
sudo lpadmin -d "$PRINTER_NAME"
else
echo "Failed to add printer"
exit 1
fi
九、高级功能
1. 打印机类(负载均衡)
# 创建打印机类
sudo lpadmin -p printer1 -E -v socket://192.168.1.101
sudo lpadmin -p printer2 -E -v socket://192.168.1.102
sudo lpadmin -p printer-class -E -c printer1 -c printer2
2. 打印过滤器
自定义过滤器位置:/usr/lib/cups/filter/
3. API接口
CUPS提供RESTful API:
# 获取打印机信息
curl http://localhost:631/printers/
# 提交打印作业
curl -X POST -H "Content-Type: application/pdf" \
--data-binary @document.pdf \
http://localhost:631/printers/Brother-HL2140
38

被折叠的 条评论
为什么被折叠?



