歡迎您光臨本站 註冊首頁

[隨筆]FreeBSD下CUPS和SAMBA共享網路印表機

←手機掃碼閱讀     火星人 @ 2014-03-05 , reply:0

[隨筆]FreeBSD下CUPS和SAMBA共享網路印表機

鄙人畢業后沒找到適合的工作,就來到這家小公司做網頁,天天用XP,實在是鬱悶至極。於是這幾天就裝了個BSD,但原先單位的印表機是裝在我的電腦上的,為了使不打亂原來的使用,我打算來個無縫轉接。這才有了本文的產生,這裡說明一下,我是把我的實現方法寫了出來,過幾天我會把我曾參考過的英文文章翻譯出來給大家看,同時希望大家能共同提高CU -》BSD版的技術水準。

1,首先,如果你用的是並口印表機,那麼這一步你可省去,如果你也跟我一樣,用的是USB印表機,那麼請仔細讀這一步。


我不知道什麼原因,第一次裝了CUPS后,並不能正確添加印表機,但是在系統中已經有  /dev/ulpt0 (BSD將USB印表機識別為ulpt0)。後來在CU上找到2003年的帖子,原來是內核中device lpt 和 device ulpt 這2項有問題,大體就是在識別USB印表機時,2者會有衝突 (我個人認為應該不可能有的,因為一個是lpt0,一個是ulpt0,根本就不一樣,不過也不排除BSD中的IRQ衝突問題)。因此,我只有重新編譯內核,去掉 device lpt,只保留ulpt。

   如此一來,果然CUPS可以識別了!

2 由於我是HP印表機,因此可以到ports中安裝hpijs這個列印驅動,其他的印表機可以到 http://linuxprinting.org去找自己的驅動。下面是具體操作:

    首先,我偷懶了,直接就安裝hpijs這個ports,這樣根據依賴關係,他會自動安裝 CUPS 還有其他的依賴程序。

     其次,在此之前我繞了彎路。因為在網上看到一些文章 說必須要下載什麼PPD文件,否則列印會有問題,因為hpijs不支持PCL。於是我下載了PPD,但直到我寫這篇文章之前再看Hpijs的文檔時才發現,原來hpjis已經解決了這個問題,可以很好的支持PCL。因此,如果你也在用HP印表機,那就不要走這個彎路了。安心的裝Hpjis這個Ports吧。

     最後,在安裝完后,大家沒必要去配置/etc/printcap這個文件,我也在這裡繞了彎路。因為在後面的SAMBA環節根本就不用這個文件,網上的文章說的應該是針對沒有安裝CUPS的人說的,所以請大家記住,不必配置那個文件,省事,省心。


3 在上一步安裝完Hpijs驅動和CUpS后,接下來就是配置CUPS了。在你剛安裝完CUPS之初,請先

#rehash
#/usr/local/etc/rc.d/cupsd start

       *註:這裡並沒有要求你像其他文章說的那樣「先配置/usr/local/etc/cups/cupsd.conf」這個文件,因為這是不必要,配置之後反而會出錯,我也在這上面吃了虧(為什麼網上那麼多人寫錯啊!),如果你執意要按別人說的去做,那麼在本節的最後我會把配置之後常出現的錯誤給出來,方便你解決。

接下來,你直接用瀏覽器打開http://localhost:631,就可以看到CUPS的配置頁面了,很直觀。首先是用root登錄,注意,你的root一定要有密碼,因為空密碼會拒絕登錄。

在這個頁面,其他的選項我不多說,就說說"Printer"這一項。首先,我們要添加印表機,點擊「ADD Printer"項,會出再


Add New Printer
       
       

        Name:________________________________
       
       
    Location:_______________________________-
       
       
Description:_______________________________


這裡的內容你可以隨便寫,並不影響你的使用,這個就相當於給你的印表機做了一張名片而已,但是注意,name 處寫的名字不能有空格。我們真正要做的是下面的內容:
點"contiue"后,就來到Devie頁面,這個頁面就是讓我們選一個設備,由於我的是USB口,就選USB1#,如果你的印表機是安裝的別人的電腦,而且是用SAMBA,那麼你可以選Windows Printer Via Samba。

再下來,就是選驅動了,這裡有一點說明一下,你的印表機驅動如果是CUPS自帶的,那麼可以省心了。如果不是呢,就到Hppt://linuxprinter.org去下PPD文件,放到 /usr/local/etc/cups/ppd/下,而不是網上說的model下。(這也告訴大家,學習不能死學,要懂變通)。

    是不是做完這些就完了呢?非也,還有更重要的要做

(未完)

對不住大家,剛才有點事要做,所以中止了。現在接著來做重要的事:

     在Linux社區看到關於列印的文檔才知道,BSD風格的默認使用/usr/bin下的lp,lpq,lpr等等 這些以lp開頭的文件,但現在我們要使用CUPS來做為默認列印風格,那麼就要替換他們,也就是


#cd /usr/bin
#mv lp* mv lp*.bak
#ln -s /usr/local/etc/cups/bin/lp* .

這樣就OK了。(關於列印的文章,在Linux社區出現的比較多,原來在Linux中還有一大部分在使用BSD LPR風格的列印。所以大家在解決BSd問題時沒必要非得找BSD的文章,參考Linux的一樣可以解決,因Linux畢竟從BSD系列發展過來,應該是通用的。)

4 接下來就是配置你的SAMBA了,打開SAMBA的Swat配置頁面(別說你不知道,即使我也不會寫出來,因這這裡不討論Samba的具體使用)


    找到Printer那個大圖標,進去后,找到「chose printer」一節,在下拉列表中選擇你在CUPS中添加的印表機名字。

     然後就是配置Samba的小節,設成:



guest=ok
public=ok
printable=yes
.........(其他的就省了)

     而另外要設定的就是在Global里把print設成cups,默認是bsd。


好了,享受一下在BSD下,網路列印的快感吧!不要說BSD實現不了,而是你沒有努力讓它實現。

另外:請大家看3樓兄弟的補充,他是6.X下的。我測試通過後會加到這裡來。


可能文章有寫得不全的地方,請大家以實際應用為準,本文只提供參考。

[ 本帖最後由 linuxbao3 於 2006-9-12 09:58 編輯 ]
《解決方案》

嘿嘿,頂一下,學習一下.以後可能會用上.
《解決方案》

有幾個問題補充一下:
1.不知LZ用的FB是什麼版本的.4.X的版本有LPT0和ULPT0不能同時編譯在內核中的問題.在FB6.X中應該沒有這個限制了.
2.裝完CUPSD后,/usr/local/etc/cups/cupsd.conf這個文件是要重新配置一下的,網上的文章沒有錯.原因是:從ports安裝完CUPSD后默認的cupsd.conf文件中只允許127.0.0.1(就是本機localhost)可以訪問631配置埠.這個限制在網路客戶用SAMBA共享方式安裝印表機是沒有影響的.只對網路客戶用HTTP協議安裝631埠CUPS印表機有影響  ,所有的網路客戶訪問不了列印伺服器的631埠.
LZ在配置印表機時是用在列印伺服器本機配置的,所有這時候是可以配置的.因為cupsd.conf默認是開機631埠可以訪問.如果把cupsd.conf文件重新配置一下可以從網路客戶端訪問,在其它WINDOWS機器的IE中也可以對列印伺服器進行配置.
3.LZ文章中的印機共享是通過SAMBA方式共享給WINDOWS客戶端的.其實只裝CUPS也可以共享給WINDOWS客戶端,客戶端可以通過如下方式安裝(前提是cupsd.conf中已配置可以從網路訪問):
假設CUPS列印伺服器的IP是aa.bb.cc.dd,安裝的印表機是HP1300,在客戶端添加網路印表機為:
http://aa.bb.cc.dd:631/printers/HP1300
下一步就是安裝印表機的WINDOWS驅動程序.

[ 本帖最後由 newkid 於 2006-9-12 09:35 編輯 ]
《解決方案》

CUPS/SAMBA的應用在LINUX下也有,配置過程大同小異,本人在DEBIAN下也試過.
《解決方案》

原帖由 newkid 於 2006-9-12 09:34 發表
有幾個問題補充一下:
1.不知LZ用的FB是什麼版本的.4.X的版本有LPT0和ULPT0不能同時編譯在內核中的問題.在FB6.X中應該沒有這個限制了.
2.裝完CUPSD后,/usr/local/etc/cups/cupsd.conf這個文件是要重新配置一下的 ...

謝謝指點,我也是剛用BSD下的列印,我的就是4.11.原來不用裝samba也可以,我回頭試試,成功的話我回來補充一下。

十分感謝!
《解決方案》

原帖由 linuxbao3 於 2006-9-12 09:49 發表


謝謝指點,我也是剛用BSD下的列印,我的就是4.11.原來不用裝samba也可以,我回頭試試,成功的話我回來補充一下。

十分感謝!
呵呵,談不上指點,有些這方面的使用經驗,大家交流交流.
《解決方案》

頂!正是我的所需。
《解決方案》

  我在windows下成功添加了網路印表機:http://a.b.c.d:631/printers/920C。但在widnows下不列印。但管理命令卻可以(比如說校準噴頭)。
  請問這是怎麼回事?
《解決方案》

不好意思,這個貼子沉在很后了,才看到,見諒!

可能的原因:
cupsd.conf中要改二個地方(使從網路可以訪問印表機):
1.<location />......</location>   注:限制可以訪問印表機的IP段.
2. <location /admin>.....</location> 注:限制可以訪問印表機配置界面的IP段.

估計您只改了第二項,所以管理命令可以使用,而不能使用印表機.
我剛在我的環境下測試了一下,的確是這樣的.

[火星人 ] [隨筆]FreeBSD下CUPS和SAMBA共享網路印表機已經有980次圍觀

http://coctec.com/docs/service/show-post-45632.html