荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (我命由我不由天), 信区: Linux
标  题: 用Linux做Windosw 9X/NT共享打印服务器(fwd)
发信站: BBS 荔园晨风站 (Fri Aug 18 14:53:00 2000), 转信

【 以下文字转载自 zzt 的信箱 】
【 原文由 zzt.bbs@bbs.dot66.net 所发表 】
作者: phila (新新人类真爱一百) 站内: Linux
标题: 用Linux做Windosw 9X/NT共享打印服务器
时间: Thu Aug 10 15:25:37 2000

用Linux做Windosw 9X/NT共享打印服务器
柏艺晖 (11/03/1999)

    作者提示:新手可以先阅读第三部分。

  一、检查打印机硬件

  1.1.并口打印机:连接好数据电缆,打开电源,确认打印机本身正常。
  Linux系统的内核在启动过程中一般都能正确的探测到机器的并口和串口。并口的设备
名一般为/dev/lp0或者/dev/lp1。
  一般Linux发行套件的内核或者本身支持并口打印,或者把并口打印支持编译成可加栽
的模块。前者当然不许我们做任何动作就已经支持,如果是后者,用户必须保证在/etc/rc
.d/rc.modules文件中用/sbin/modprobe命令把并口打印模块加栽进内核。
  2.0.X的内核如下:
  /sbin/modprobe lp
  2.2.X的内核大致如下:
  /sbin/modprobe parport
  /sbin/modprobe parport_pc io=0x378,0x278 irq=7,5
  /sbin/modprobe lp
  *注意,如果你有其他的设备(如声卡),IO地址和中断注意不要设成一样的。

  如果在系统启动时,发现启动信息里面有lp0 at 0x378,(polling)的字样,表明系统已
经检测到了并口;
  如果启动的时候没有看清楚,可以tail /var/log/messages去阅读是否在最新的启动信
息里面包含了类似的信息。

  这个时候就可以测试一下,输入命令/usr/bin/lptest,打印机应该会出现输出如下的
页面:

  !"#$%&'()*+,-./0123456789:;<=>?@ABC
  ......

  1.2.IP网络打印机:设置好IP,子网掩码,基于安全的考虑,建议不要设置路由;保存
设置;连接好通往集线器的网线。

  如果能在Linux服务器上远程连接上打印机,出现命令提示符,就OK了。

  二、打印配置

  2.1.打印软件的选择
  由于大多数的Linux发行套件都包含了BSD打印系统,加上其易用性,因此得到了广泛的
应用。为了支持现代的打印机还必须要安装一些辅助的软件包。一般来说,至少系统上要有
如下软件包:
  Ghostscript,nenscript。大多数的Linux发行套件都包含了这些软件包和另外的一些排
版和打印工具。即使出现最糟糕的情况,没有包含以上软件包。可以从Linux的FTP站点或者
别的发行套件中获得。
  Ghostscript ftp://ftp.cs.wisc.edu/ghost/
  Nenscript ftp://sunsite.unc.edu/pub/Linux/system/printing
  二者均可在ftp.cdrom.com等映像站点找到。

  2.2.配置printcap文件
  BSD打印系统的打印机配置文件是/etc/printcap。printcap文件中每条记录对应着设置
好的一个打印机队列。我的printcap文件内容如下:

  lp|HP5000|HP:\
  :sd=/var/spool/lpd/lp:\
  :mx#0:\
  :sh:\
  :rm=10.1.9.199:\
  :rp=:\
  :if=/var/spool/lpd/lp/filter:

  如果是本地的并口打印机,可使用如下格式:

  lp|HP6L|HP:\
  :lp=/dev/lp0:\
  :sd=/var/spool/lpd/lp:\
  :mx#0:\
  :mc#0:\
  :lf=/var/log/printer-errors:\
  :if=/var/spool/lpd/lp/filter:

  printcap记录的格式约定如下:

  a)注释行以"#"开始;
  b)续行号是"\",注意"\"前不能有空格;
  c)一行和它所有的续行定义一个打印机队列;
  d)每行中每个域用冒号":"隔开,第一个域前没有":",最后一个域必须有":";
  e)第一个域定义打印机队列名,每个打印机队列可以有多个名字,用“|”隔开;有“
lp”的打印队列为默认的打印队列;
  f)每个本地打印机队列都必须有一个“lp”域定义打印机连接的端口,如“:lp=/dev/
lp0”。

  printcap记录中各主要域的意义如下:

  sd(spool directory):打印缓存目录。一般都默认/var/spool/lpd目录下面的子目录
。要注意的一点是目录名必须和第一个打印机队列名一致。在上例中,子目录名称应该为l
p,而不是HP5000或者HP。

  lp(Local printer):本地打印设备。如/dev/lp0,/dev/lp1,/dev/ttyS0(串口)等等。不
能和rp同时设定。如果设置为串口设备,必须用br(baud rate,串口速率)设定串口的传输速
率。

  lf(log file):储存错误信息的记录文件。

  mx(maximum size):打印文件的最大大小。默认值mx#0,即不限制;其他值设置最大文
件的块(block)数,在Linux上一个block就是1024字节。

  if(input filter):输入过滤器。如果没有指定if或者of,默认值是/usr/bin/lpf。

  of(output filter):输出过滤器。

  br(baud rate):设定串口速率。

  rp(remote printer):远程打印队列名。不能于串口打印机同时使用;必须用rm指定远
程打印机;在使用远程打印机时,一般只需设定sd和if域。

  rm(remote machine):控制远程打印的的远程系统。

  sh(suppress header):不打印标题。一般应该设置这个域。

  mc(maximum copies):最大的打印份数。默认值mc#0,即无限制。

  gf(graph filter):图形过滤器。


  2.3.打印过滤器
  在printcap文件中if域是指定打印过滤器的。指定以后,所有要打印的文件都要先经过
打印过滤器再送到打印机上。如果没有指定过滤器,系统会自动使用默认的/usr/bin/lpr作
为过滤器使用。现在很多Linux的发行版本中的都包含了打印过滤器,如Redhat的printtoo
l包。当然我们也可以自己编写利用已有软件的打印过滤器。以下就是一个HP LaserJet 4/
5/6L可以使用的一个简单的过滤器:

  #!/bin/bash
  DEVICE=ljet4
  RESOLUTION=600X600
  PAPAERSIZE=a4
  SENDOF=
  nenscript -TUS -ZB -p- |
  if 〔 "$DEVICE"="Postscript" 〕; then
  cat -
  else
  gs -q -sDEVICE=$DEVICE \
  -r$RESOLUTION \
  -sPAPERSIZE=$PAPERSIZE \
  -dNOPAUSE \
  -dSAFER
  -sOutputFile= - -
  fi
  if 〔 "$SENDOF"!=""〕;then
  printf ""
  fi
  exit 0

  2.4.打印机共享
  在Linux上是通过samba和Windows网络进行文件和打印机共享的,所以要求要求Linux服
务器上安装并启动了samba。同样,现在发行的绝大多数发行版本都包含了samba。可以到h
ttp://www.samba.org去了解和下载最新的版本。

  我的/etc/smb.conf文件内容如下:

  〔global〕
  workgroup = AISAINFO #设置工作组
  server string = Samba Server
  hosts allow = 10. 127.
  printcap name = /etc/printcap #指定printcap位置
  load printers = yes #载入打印机
  printing = bsd #打印系统类型
  security = server #安全模式,我采用的是Windosw NT用户模式
  password server = NTSERVER1 #Windows NT模式的口令服务器,使用主域/备份域控制

  password level = 8
  username level = 8
  domain controller = NTSERVER1
  wins support = no
  oplocks = False
  preserve case = yes
  short preserve case = yes
  postscript = True #使用postscript
  〔homes〕
  comment = Home Directories
  browseable = no
  writable = yes

  〔printers〕 #打印机设置区
  comment = All Printers
  path = /var/spool/samba
  browseable = yes
  guest ok = yes
  writable = no
  printable = yes
  samba正常启动后,在网上邻居就可以看到共享的Linux设置的打印服务器了。然后在各
客户端选择
  开始菜单->设置->打印机->添加打印机->...->选择好打印机型号,好了,mission ac
complished!

  三、Redhat上的PrintTool简单说明

  很幸运,现在Linux很多的发行版本提供图形界面的配置工具,刚开始的时候Redhat的P
rintTool就是一种。

  这样我们就可以,跳过2.2和2.3两个繁琐的部分,而仅仅需要在printtool里面简单的
选择
  add->choose printer type->...->lpc restart all就OK了。

  我add的Remote Unix(lpd) Queue输入内容如下:

  Names (name1|name2|...) lp
  Spool Directory /var/spool/lpd/lp
  File Limit in Kb (0=no limit) 0
  Remote Host 10.1.9.199
  Remote Queue
  Input Filter Select *auto* - PostScript



--
爱到心破碎,也别去怪谁,只因为相遇太美,就算流干泪,伤到底,心成灰,也无所谓。
我破茧成蝶,愿和你双飞,最怕你会一去不回,虽然爱过我,给过我,想过我,就是安慰。
我向你飞,雨温柔地追,想你的拥抱把我包围。
我向你飞,多远都不累,虽然旅途中,有过痛和累。
我向你追,风温柔地吹,只要你无怨我也无悔。
爱是那么美,我心陶醉,被爱的感觉。
--
※ Origin: 笑 书 亭 <bbs.dot66.net>
◆ From: 202.107.204.9
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.11]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店