歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

在Linux中配置網絡打印機共享

作者: Bryan Pfaffenberger, TechRepublic  在連接局域網時,一個焦點問題就是怎樣實現打印機的共享,從而節省大量費用
  。考慮一下給每個用戶都裝備一台象樣的打印機需要花費多少錢。象其他網絡操作系統一樣,Linux為網絡中的打印機實現共享提供了很好的環境。如果使用Linux,你不必為你不會用到的商業應用和硬件花費大量的費用。要是Linux只花費很少或者無需任何費用就可以做同樣的工作,那為什麼還要去買惠普昂貴的打印機服務器呢?讓我們來看一下怎樣使打印機在Linux的本地環境中實現共享。
  
  前提條件:本地打印機
  這篇文章假定在你的Linux系統中已經安裝了一個本地打印機,直接向你介紹怎樣在網絡中共享你的打印機。如果你還沒有安裝本地打印機,你需要先安裝一個,然後再看這篇文章。現在的Linux具有更加易用,友好的打印機配置工具,例如Red Hat的打印工具。如果你用的不是Red Hat,請你查看你的文檔,查閱怎樣在你的系統中安裝一個打印機。
  
  介紹Line Printer Daemon(lpd)
  
  盡管一些Linux的配置中提供了可選的打印機接口,但比較普遍的還是Line Printer Daemon (lpd)。當一個應用程序需要打印服務,lpd被激發。它在/var/spool/lpd的臨時存儲區域中新建一個打印輸出文件,然後,它查找打印機並且根據打印機的速度將打印輸出分割打包。如果lpd在完成第一項工作之前,又收到了其他的打印請求,它建立一個等待打印文件的隊列。由於不同的打印機有不同的特性,lpd是怎麼知道如何去打印一個文件呢?lpd的配置文件/etc/printcap將告訴你答案。在這個文件中,有一個或許多小節,看上去象一首詩一樣,是配置命令塊。每一個小節定義一種打印機,它提供了諸如打印機怎樣連接到電腦,將用到哪個filter文件等信息。對每一種打印機來說,它具有唯一的filter文件。它定義了這種打印機的特性和性能。
  
  請記住lpd是一項網絡服務,即使你在單機或只有一個用戶的工作站上應用Linux。當一個應用程序需要lpd的服務時,它通過TCP/IP發出一個請求。因此,如果一個本地的應用程序可以通過本地的lpd發出服務請求,那網絡中的任何應用程序同樣可以做到。如果你對服務端和客戶端的配置正確,對用戶而言,網絡打印就會變得完全透明了。
  
  在使用Linux之前,如果你一直在一個Windows網絡背景下工作,你可能認為為了在網絡中共享打印機,在服務端或客戶端安裝網絡文件系統(NFS)服務是必要的。因為在Windows中,網絡打印和文件共享是由同一個巨大而復雜的協議支持的,這個協議被稱為服務信息塊(SMB)。但Linux不是這樣的,受UNIX的遺傳,Linux的工具集顯得更小巧,功能更集中,也就有更少的bug。NFS處理文件共享的方法完全獨立於打印共享。同樣地,lpd處理打印共享並不需要NFS。
  
  在我們開始之前,我應該闡明一些術語
  。Linux中的服務端是指打印機所連接的主機,客戶端是指遠程使用打印機的主機。例如,在一個有四台主機的網絡中(它們分別為luke, leia, yoda, 和han),打印機安裝在luke上。因此,luke就是服務端,其它的主機將遠程使用打印機,它們就是客戶端。為了使一個本地打印機成為網絡打印機,需要以下一些步驟:
  
  在服務端,為每個將遠程使用打印機的客戶建立一個帳號。你需要創建一個名為/etc/hosts.lpd的配置文件。這個文件包括可以使用打印機的主機名或IP地址。
  
  在每個客戶端,在/etc/printcap中添加一小節來說明打印機的特性和位置。你可以利用Linux自帶的配置工具來配置打印機,也可以為每個客戶端系統手工配置/etc/printcap文件。
  
  第一步:首先准備網絡打印的服務端。
  讓我們注意服務端,你必須確信打印機被正確的連接而且可以正常工作。現在,你要確信連接在主機上需要打印服務的所有用戶都有一個帳號。如果你計劃用NFS,就要確信帳號中的內容是唯一的:用戶名,用戶的ID號(UID),主成員組和主ID組(GID)。
  
  在連接著打印機的主機上,打開一個終端窗口,用超級用戶進入。然後,在文本編輯器中新建一個文件,如果你想在luke上為leia, yoda, 和han提供網絡打印服務,就在文件中鍵入
  
  leia
  yoda
  han
  
  為了利用這些用戶名,網絡所有的主機都必須在/etc/hosts文件中列出每一個的用戶名,相應的IP地址和域名,就象下面的一樣:
  
  192.168.1.10 luke.mydomain.org luke
  192.168.1.11 leia.mydomain.org leia
  192.168.1.12 yoda.mydomain.org yoda
  192.158.1.13 han.mydomain.org han
  
  如果你沒有用這種方法建立你的/etc/hosts文件,你也可以用每個客戶端的IP地址代替用戶名,象下面:
  
  192.168.1.11
  192.168.1.12
  192.168.1.13



  
  完成以後,你可以保存文件,然後退出。
  
  作者的注釋
  如果你讀過一些早先關於Internet的文件,你可能會覺得正確的配置文件名稱是/etc/hosts.equiv,但千萬不要用這個名稱創建和使用文件!它存在一個明顯的安全漏洞。hosts.equiv列出的主機可以不受任何限制訪問服務端,准許這種訪問顯然不是好事情,即使在一個所有人都相互信任而且也不會有任何人做壞事情的小網絡。如果發生意外,或有人做了壞事情,你應該避免危害到網絡中的其他系統。在一個大型的網絡中,特別是在一個連接著Internet的網絡中,用hosts.equiv就是自找麻煩。相反地,用hosts.lpd可以在網絡中共享打印機,而不必冒hosts.equiv那麼大的風險。
  
  第二步:配置客戶端
  為了使你的客戶端能夠遠程使用打印機,你需要知道怎樣在你的Linux中利用打印配置工具來建立客戶端。如果你用的是Red Hat或者以Red Hat為基礎的系統,你可以利用自帶的打印工具。其他系統也提供類似的工具。盡管這些說明是針對特定的打印工具,但你應該可以改編下面的步驟,以適應你的打印機配置工具:
  
  以系統權限登錄,並開啟打印機配置工具。在Red Hat或者以Red Hat為基礎的系統中以超級用戶執行配置工具,鍵入/usr/sbin/printtool,按回車。你將看到Red Hat Linux的打印系統管理器。
  
  點擊ADD來創建一個新的打印機模型,你將看到增加了一個打印機登錄對話框。
  
  選擇刪除Unix(lpd)隊列,點擊OK。你將看到編輯遠程Unix(lpd)隊列登錄對話框。
  
  在填寫名稱的地方,為打印機鍵入一個或多個名稱,名稱間用豎線隔開,如果系統提示一個名稱,你應該用它。在填寫地址的地方,接受系統提供的地址。對遠程打印機而言,每一個客戶端都會有自己的本地打印地址。在填寫遠程主機的地方,鍵入打印機所連主機的IP地址。
  
  在填寫遠程隊列的地方,鍵入遠程打印機的名稱隊列。如果在遠端系統中只定義了一個打印機,鍵入lp。如果遠端系統的/etc/printcap文件中不止一個打印機,打開這個文件,並且確定打印機隊列中的名稱(例如lp0, lp1,或著lp2)。
  
  打開Input Filter文件,在列表中選擇計算機類型。如果你的打印機不在列表中,屬於其他類型,選擇PostScript Printer。點擊OK,退出Input Filter列表。
  
  點擊OK來確認網絡打印機的設置,這些將添加並保存在/etc/printcap中。如果你用的是其他的打印機配置工具,確信你所做的配置設置得到保存。點擊菜單欄上的Tests,選擇Print PostScript Test Page,讓打印機打印測試頁。
  
  如果測試不成功,你就要查找原因。首先,服務端的打印機在正常工作。然後,再次檢查你的/etc/hosts.lpd文件(看上面的第一步)。你是否正確輸入計算機名稱或IP地址?接著,檢查客戶端配置。仔細地檢查你的輸入。現在,試著從這個問題主機的用戶帳號中使用打印機。如果遠程打印機在打印測試工具下正常工作,在用戶帳號中卻相反,在服務端的用戶帳號肯定出了問題。為了實現遠程打印,服務器上必須建立與用戶所在的客戶端一致的帳號。如果在兩個用戶間有任何差異,例如用戶ID或者主成員組發生沖突,把它改過來。(在Red Hat系統中,你可以用LinuxConf更改用戶帳號信息。)
  
  在網絡中的所有客戶機上重復以上的步驟。如果在客戶端使用遠程打印機出現問題,這個問題幾乎肯定是緣於在服務端的用戶帳號,服務端的/etc/hosts.lpd文件,或是一個簡單的輸入錯誤。
  
  關於/etc/printcap
  
  如果你想知道更多的關於lpd是怎樣實現遠程打印的,請查看打印機配置工具在/etc/printcap中創建的小節
  。然而,不要做任何改動,除非你確信自己在做什麼。特別地,如果這個小節是配置工具寫入的,一定不要做任何改動。一些工具,例如Red Hat的打印工具,有自己特定的語法規則,你做的任何改動都可能使你的打印機停止工作。如果你必須更改你的打印機設置,請再次運行工具。這有一個例子,說明一個客戶端成功的使用遠程打印機:
  
  lpgrumpydeskjet::sd=/var/spool/lpd/lp::mx=#0::sh::rm=192.168.100.34::rp=lp::if=/var/spool/lpd/lp/filter:
  
  這裡不適合對/etc/printcap做過長的論述,但我應該指出一些需要注意的地方:
  
  一個小節必須表達在一行中。盡管這可能導致難以理解,另外,你可以插入反斜線來分割一行。如果打印機沒有正常工作,確信每行的小節都是以反斜線結束的(當然,除了最後一行)。
  
  冒號將小節分成若干部分。
  
  在列表的第一行表示打印機和相應名稱,用豎線割開。
  
  一些變量是布爾型的,取值為yes/no或on/off。如果存在於文件中,它們將自動發揮作用。
  
  其他變量需要指定值,賦值用等號,例如sd=/var/spool/lpd/lp。還有一些是數字型變量,賦值用數字操作符#,例如,mx#0。



  
  一個小節必須表達在一行中。盡管這可能導致難以理解,另外,你可以插入反斜線來分割一行。如果打印機沒有正常工作,確信每行的小節都是以反斜線結束的(當然,除了最後一行)。
  
  冒號將小節分成若干部分。
  
  在列表的第一行表示打印機和相應名稱,用豎線割開。
  
  一些變量是布爾型的,取值為yes/no或on/off。如果存在於文件中,它們將自動發揮作用。
  
  其他變量需要指定值,賦值用等號,例如sd=/var/spool/lpd/lp。還有一些是數字型變量,賦值用數字操作符#,例如,mx#0。



Copyright © Linux教程網 All Rights Reserved