当前位置:  技术问答>linux和unix

怎样共享打印机在Linux和Windows 2k之间

    来源: 互联网  发布时间:2014-12-11

    本文导语:  我有两台PC, 其中一台安装Red Hat Linux 6.0,并且直接与EPSON打印机连接,另一台安装Windows 2k, 通过NETTERM和LINNUX相连,  问题 我如何通过Windows 2k共享EPSON打印机? | 在连接局域网时,一个焦点...

我有两台PC, 其中一台安装Red Hat Linux 6.0,并且直接与EPSON打印机连接,另一台安装Windows 2k, 通过NETTERM和LINNUX相连, 
问题
我如何通过Windows 2k共享EPSON打印机?

|
在连接局域网时,一个焦点问题就是怎样实现打印机的共享,从而节省大量费用 
。考虑一下给每个用户都装备一台象样的打印机需要花费多少钱。象其他网络操作系统一样,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的打印工具,有自己特定的语法规则,你做的任何改动都可能使你的打印机停止工作。如果你必须更改你的打印机设置,请再次运行工具。这有一个例子,说明一个客户端成功的使用远程打印机: 

lp|grumpy|deskjet: 
: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。 

默认的打印机名称是lp。其他打印机命名为lp0, lp1, lp2等等。 

变量sd指定打印机的目录位置。/etc/printcap中的小节访问远程打印机,而spool(/var/spool/lpd/lp)存储着本地信息。 

变量mx指出在打印机的打印文件队列中所允许的文件最大值。如果允许任意大小的文件打印,则mx=#0。 

变量sh(如果有的话)禁止打印文件的头,头说明了将要打印文件的工作名称和所用资源。如果你在一个有大量用户的大型网络中配置打印机的话,为了使服务人员便于将打印结果分类,你可能希望打印出这个头。 

变量rm指出远程打印机的位置。你可以用一个名称(例

    
 
 

您可能感兴趣的文章:

  • redhat9 如何连接到xp上共享的打印机来打印?
  • 两台linux机器间怎么样共享打印机!提供资料信息也形!
  • 我已在linux下设置打印机为共享,如何在win200下访问
  • Solaris 连接Windows共享打印机的问题???
  • 如何将安装在Windows上的打印机共享给Linux?
  • Redhat7.2安装打印机?我的Linux机器已经加入到域里面,Linux机和Window机可以互看共享文件,打印机装在域内一台WIndow机(Public)上(
  • 有关pcmaclan的打印机共享问题
  • 我想在linux下面和其他的windows机器共享我的打印机,晴雯怎么设置?
  • Linux下,怎样把打印机共享,给别人的Windows用?
  • ret hat linux 9,samba配置,在xp里只能看到打印机他传真机,看不到共享的目录,哪位兄台能指点?
  • 不同用户user之间如何访问共享内存?
  • 如何在linux和windows之间共享文件????
  • Unix下如何在两个进程之间共享一块大内存??????
  • 如何实现异构系统之间的文件共享?急需!!!谢谢!!!
  • 关于windows2000和linux之间的文件共享(很急)
  • unbuntu下安装了VirtualBox装了个 XP的虚拟机,那么这两个系统之间怎么实现资源共享?
  • linux linux 之间共享文件夹
  • 如何实现Unix/linux服务器之间文件的相互共享?
  • (在线等)消息队列,信号量和共享存储器之间各自有啥特殊功能?有啥共同点??
  • 请大家讨论,来者有分,java中多个线程之间共享数据的方法都有哪些?
  • 如何设置XP和WM之间的共享目录
  • 搭建虚拟机用的VirtualBox 怎样在主机XP虚拟机ubuntu之间建立共享
  • 如何在多个进程之间共享一个磁盘文件?
  • Linux服务器之间的文件共享问题
  • 一台机器上的linux和windows系统之间如何共享资源
  • 如何使用有名管道或者共享内存技术实现虚拟机与主机之间的通信?
  • 怎么实现windows xp主机和vm-linux虚拟机之间 的文件共享?来者 给分!
  • windows xp主机和vm-linux虚拟机之间 的文件共享
  • android不同activity之间共享数据解决方法
  • 浅析mysql 共享表空间与独享表空间以及他们之间的转化
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ubuntu的Linux与windows可以互ping,但是无法访问windows的共享文件夹,怎么解决
  • linux与windows如何实现共享
  • linux 下如何共享使用windows下的内容
  • 论坛 iis7站长之家
  • linux(kde)下访问(浏览)局域网内windows系统(共享文件)
  • 如何让Linux共享Windows上网
  • linux(FC1)下,如果共享一个文件给WINDOWS系统通过网络访问
  • 关于samba访问windows共享目录
  • fedora10 与 windows共享目录问题
  • 关于虚拟机共享windows文件夹的问题
  • Linux下怎么看windows 2003 server共享的文件?
  • 请问如何让windows和redhat9共享一个分区?
  • Fedora 9 vmware 与 windows host 的文件共享问题
  • 在windows 下能够直接打开linux smb共享的文件吗?
  • 如何实现windows和linux两台机子的文件共享
  • ubuntu中访问windows下的共享文件夹问题
  • linux下windows共享文件夹下解压缩问题
  • 如何Mount到 网络上windows的共享文件夹?
  • 用samba正常连接到windows了,但是我设的共享看不到???急
  • 虚拟机上安装的redhat 怎么和主机windows共享文件夹
  • Linux 共享内存介绍及实现代码
  • NFS共享作业时, 在客户端只可以看到服务器端的共享目录,而看不到共享目录下的内容.?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?
  • 如何共享 共享库(*.so)中的变量?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?
  • 用samba共享其它机子访问Linux共享时,机子可以进入,但要打开共享文件夹时提示“无法访问...找不到网络名。”这是什么原因呢?
  • 局域网中的红旗2.0如何共享到win98服务器的联接共享?
  • 在linux下能不能创建一个堆,然后给堆指定一块共享内存,然后各个程序用此堆来new对象来共享?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?解决立即给分
  • 几个servlet共享一些数据 如我从数据库里读出一些重要的设置存入vector 让几个servlet共享 怎么做到?先谢


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3