2008年6月16日 星期一

在 Linux 使用 Samba + CUPS 分享印表機

在 Linux 環境中新增印表機
允許遠端連入 CUPS Web 管理介面
使用 Samba + CUPS 分享印表機給 Windows user 使用
建置虛擬 PDF Printer 分享給 Windows user 使用
範例環境:

Fecora Core 4 (kernel: 2.6.12.4)
cups-1.1.23-15.1
ghostscript-7.07-40
samba-3.0.14a-2
system-config-printer-0.6.131.3-1
新增印表機 (需求套件: system-config-printer)

執行 printconf (文字模式) 或 printconf-gui (圖形模式) 新增印表機

連接至本機 LPT 並列埠的第一台印表機為: /dev/lp0

連接至本機 USB 介面的第一台印表機為: /dev/usb/lp0

允許遠端連入 CUPS Web 管理介面 (需求套件: cups)

設定檔: /etc/cups/cups.conf


Order Deny,Allow
Deny From All
Allow From 192.168.1.0/24



AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 192.168.1.0/24


Browsing On
BrowseProtocols cups
BrowseOrder Deny,Allow
Deny From All
BrowseAllow From @LOCAL
Listen 0.0.0.0:631

以瀏覽器登入管理: http://your.linux.ip:631

使用 samba + cups 分享印表機給 Windows user 使用 (需求套件: samba、cups)

設定檔: /etc/samba/smb.conf

[global]
workgroup = WORKGROUP
netbios name = FC4
hosts allow = 127. 192.168.1.
printcap name = /etc/printcap
load printers = yes
printing = cups
cups options = raw
security = share

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = yes
writable = no
printable = yes
use client driver = yes 要是沒有加上這個也會出現存取被拒

ps. 可執行 testparm 測試 smb.conf 是否設定正確; 若無法列印, 系統記錄出現 raw 錯誤訊息時, 將 /etc/cups/mime.* 關於 raw 的設定取消註解符號 ( # ) 即可.

Microsoft Windows 的操作:

新增網路印表機, 瀏覽 \\FC4 (smb.conf 設定的 netbios name) 會顯示剛剛使用 printconf 加入的印表機名稱

建置虛擬 PDF Printer 分享給 Windows user 使用 (需求套件: ghostscript、samba)

設定檔: /etc/cups/cups.conf

[PDF] (註1)
path = /tmp/pdf
browseable = yes
writeable = yes
guest ok = yes
force user = nobody

[pdfprinter] (註2)
path = /var/spool/samba
printable = yes
printing = bsd (註3)
guest ok = yes
print command = /usr/bin/printpdf %s
use client driver = yes
lpq command =
lprm command =

Shell Script: /usr/bin/printpdf (需自行建立)

#!/bin/sh

NAME=`date +%F-%H%M%S`
SRCDIR=/var/spool/samba
OUTDIR=/tmp/pdf
ps2pdf "$SRCDIR/$1" "$OUTDIR/$NAME.pdf" 2>/tmp/printpdf.error
rm -f "$SRCDIR/$1"

最後記得要 chmod a+x /usr/bin/printpdf

註1. 在 /tmp/pdf 分享列印出來的 PDF 檔
註2. 設定虛擬印表機名稱為: pdfprinter
註3. 不加這行的話就會用到 [global] 裡的 printing = cups 設定, 會出現 client-error-not-found 的錯誤

Microsoft Windows 的操作:

於 Windows 新增印表機: \\FC4\pdfprinter
使用任何支援 PostScript 的 Driver 即可.
例如: Canon → Canon PS-IPU Color Laser Copier v52.3
(名字裡有 PS 或 PostScript 的即代表支援 PostScript; 當然, Color 就是彩色的囉 :)

列印後可至 \\FC4\PDF 查看列印結果 ( .pdf 檔 )

沒有留言: