3. 打印到 Windows 电脑

3.1. 连接到 Windows

图 2. 网络打印

SMB 和 CIFS 是 Windows 文件和打印机共享协议。我们使用 Samba 与 Windows 电脑通过这些协议进行通信。在配置 CUPS 之前,我们应该确保可以使用 Samba SMB/CIFS 客户端 smbclient 连接到 Windows 电脑,如图 2 所示。

以下是创建到 Windows 电脑连接的示例

/usr/bin/smbclient -L rice -U fred

added interface ip=10.6.7.234 bcast=10.6.7.255 nmask=255.255.255.0
Got a positive name query response from 10.6.7.8 ( 10.6.7.8 )
Password: (not shown)

Sharename  Type  Comment
PRINTER$   Disk
INKJET     Printer
STUFF      Disk
IPC$       IPC    Remote Inter Process Communication 

显示的命令请求列出名为 “rice” 的 Windows 电脑上的共享,用户 ID 为 “fred”。结果显示一个名为 “INKJET” 的打印机。

如果 Windows 命名服务不可用,您将需要使用-I开关来指定 Windows 电脑的 IP 地址,如

/usr/bin/smbclient -I 10.6.7.8 -L rice -N

更多信息请参阅 Samba 文档关于 smbclient 的用法。

3.2. CUPS 配置

一旦您找到 Windows 打印机,您就可以配置 CUPS。首先使用以下命令验证您的 CUPS 安装是否具有 smb 后端

ls -l /usr/lib/cups/backend/smb

如果此文件不存在,请通过发出以下命令创建它

ln -s `which smbspool` /usr/lib/cups/backend/smb

以下是设置上面显示的打印机的示例。您将必须成为 root 用户或使用 sudo 来执行这些命令

/usr/sbin/lpadmin -p RicePrinter -v smb://fred:mypass@rice/INKJET -P /root/inkjet.ppd
/usr/bin/enable RicePrinter
/usr/sbin/accept RicePrinter
/usr/sbin/lpadmin -d RicePrinter

如上所述,bash 有一个内置命令叫做 enable,因此 bash 用户必须使用完整路径 (/usr/bin/enable) 来启用打印机。

“lpadmin” 命令通过将用户名、密码、netbios 名称和打印机名称作为单个参数来设置共享的 Windows 打印机。有关上述命令的进一步解释,请参阅第 2.3 节

您的打印机现在可以测试了。使用 lp 命令后跟文件名,或通过从应用程序中打印文档,将文件发送到打印机。