精華區beta FreeBSD 關於我們 聯絡資訊
================================ License ================================ 記得說是我寫的就好了 :p 有錯誤歡迎指正 :-) ============================== Environment ============================== server : FreeBSD 4.6-STABLE + samba 2.2.4 printer : HP LaserJet 8000/8100 (註一) clients : Windows 98/Me/XP/2000 這邊我將使用 XP 把 printer 的 driver 上傳至 server. FreeBSD 上面關於 printer 在 samba 的目錄 : /home/samba/printers : 印表機 driver 所在點, 請參考 samba 的 doc 瞭解其 下的目錄結構 /home/samba/printers/W32X86 : 放置 for 2000/XP 的 printer driver /home/samba/printers/WIN40 : 放置 for 95/98/Me 的 printer driver ================================ Prework ================================ # 下載 printer 的 driver, 因為不同的 os 需要不同的 driver, 所以請依照需求下載必要的 driver. 在這裡由於我得在 98/Me/XP/2000 上使用 printer, 因此下載了 for 98/Me, 2000, XP 的 driver, 分別存放在 Windows XP 的 d:\printer\98; d:\printer\2000; d:\printer\XP 記得如果是壓縮檔請解壓縮. # 如果你知道 printer 的型號最好, 但為了保險起見, 請編輯 driver 目錄下有個 .inf 的檔案, 找到 [Strings] 這個 section, 下面有個 Printer="..." 請將該 name 用筆抄下來, 比如說 Printer="HP LaserJet 8100 Series PCL 6" 其中 "HP LaserJet 8100 Series PCL 6" 就是我的 printer name # 安裝 samba, 看你要用 ports, package, or whatever you like :) # 編輯 /etc/printcap, 加入你的 printer. hp8100:\ :lp=:sh:rp=:mx=0:sd=/var/spool/lpd/hp8100:rm=hp8100.somewhere.on.lan: hp8000:\ :lp=:sh:rp=:mx=0:sd=/var/spool/lpd/hp8000:rm=hp8000.somewhere.on.lan: =========================== Setup : (Server 端) ========================= 這邊有很多種做法, 以下是對我而言較方便的方法 :) # 編輯 smb.conf, 在 [global] section 中加入 printer admin = [userid], 其中 [userid] 為你想要使用的管理者 id. 在這邊為了方便起見, 我使用 nobody, 也就是跑 samba 的 userid. 如此一來可以省去不少麻煩, 但為了 安全起見, 上傳好 printer driver 之後最好把這行刪除 # 編輯 smb.conf, 加入 [print$] section. 如此一來便可以利用 XP/2000/NT 的功 能將 printer driver 上傳了 [print$] ; 一定要這樣寫 comment = All Printers path = /home/samba/printers ; 準備用來上傳 driver 的位置, ; 記得要先建立好 W32X86 & WIN40 目錄 guest ok = Yes browseable = Yes read only = Yes ; 設定 read only, 基本上沒用 :p write list = nobody ; 設定誰可寫入 ? nobody, 也就是在 ; 跑 samba 的 user create mask = 0644 directory mask = 0755 # 最後定義你的 printer [HP8100] ; 這是在網芳中會出現的 netbios name comment = HP LaserJet 8100 for 95/98/Me ; 註解 browseable = yes printable = yes public = yes [HP8000] comment = HP LaserJet 8100 for 2000/XP public = yes printable = yes browseable = yes # 要注意的是, netbios name 一定要跟 /etc/printcap 中的一樣, 在這邊是 hp8100 & hp8000. 當然你也可以設定為不同的名稱, 然後加入 printer = [printer name] 其中 [printer name] 為你在 /etc/printcap 中定義的 printer name. 當然我不建議那麼做, 因為如果你把 netbios name 設太長, 在 Windows 98 之下看到的 netbios name 會被截去部份字元. # 如果你不想一個個加入 netbios name, 有一種比較快的方法. 在 [global] section 中使用 load printers = Yes 另外加入 [printers] section : [printers] printable = Yes browseable = Yes public = Yes 這麼一來會與之前做的效果一樣, 你可以斟酌擇一使用, 在這裡我是用之前的方法. # 重新啟動 samba, server 的設定先告一段落. ===================== Setup : (Windows XP 上傳 driver) ================== # 使用 XP 進入 File_Server 的網芳, 點選 印表機. # 這時會看見一片空白 (其實設定好也不會有東西), 按右鍵選 伺服器內容, 會彈出一個 window, 選驅動程式, 按下新增 # 選擇下一步, 選從磁片安裝, 接著選則 XP driver 的目錄, 選下一步 # 接著出現選擇作業環境的視窗, 把 Intel 的都勾起來吧 :D 請按下一步 # 然後請你確認, 按完成 # 程式會一一詢問其它 os 的 driver 目錄, 就輸入吧. # 到這邊就算完成了 driver 的上傳, 你可以看看 /home/samba/printers/W32X86 & WIN40 裡面是否多了東西 :) ========================== Setup : (Server 端) ========================== # 有了 driver 有了 printer 分享了, 剩下來的工作就是把 driver 對映到特定的 printer 上面, 可以利用 rpcclient 來完成 # rpcclient File_Server -U root%secret -c 'setdriver \ "hp8100" "HP LaserJet 8100 Series PCL 6" 這是把 "hp8100" 這一台 printer (netbios name) 對映到 "HP LaserJet 8100 Series PCL 6". 還記得先前抄下來的 printer name 嗎 ? 就是它了 ! 如果出現 Succesfully .... 這樣就代表成功了 :) # rpcclient 的用法請 man =========================== Happy Printing ============================== # 在 Windows 上面安裝網路印表機的方法就不用我教了吧 ? :p # any questions mail to : [email protected] * 附件 : smb.conf # Global parameters [global] workgroup = Blah netbios name = FILE_SERVER server string = Samba Server security = SHARE log file = /var/log/samba/log.%m max log size = 50 deadtime = 10 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 dns proxy = No invalid users = root printer admin = nobody ; load printers = Yes [print$] comment = All Printers path = /home/samba/printers guest ok = Yes browseable = Yes read only = Yes write list = nobody create mask = 0644 directory mask = 0755 [tmp] comment = Temporary file space path = /home/samba/tmp read only = No guest ok = Yes [public] comment = Public Stuff path = /home/samba/public guest ok = Yes read only = Yes ;[printers] ; printable = Yes ; browseable = Yes ; public = Yes [HP8100] comment = HP LaserJet 8100 Series PCL 6 printable = Yes browseable = Yes public = Yes [HP8000] comment = HP LaserJet 8000 Series PCL 6 printable = Yes browseable = Yes public = Yes [註一] 基本上可以不用那麼做, 因為 HP 新版的 Network Printer Wizard 已經會自動 幫你做好一切了, 只是一來這邊的環境比較特殊, 有人會想要在網芳中自己加印 表機, 但又找不到開始譙, 我就會很累 :p 二來 bsd 閒閒沒事做耗一下資源, 順 便看看 samba 的功能如何了 :) -- 我的簽名檔只有十個字. -- ^..^ < 豬 頭 紀 公 園 - php.twbbs.org (140.114.81.201) > -w @@ w-- < CTS.nthu.edu.tw >