是否可以将 Linux 计算机配置为“网络打印机设备”?我有一台 USB 打印机,我打算像打印机一样在网络中共享本机网络打印机设备。
那可能吗?如何?
笔记: “自主”网络打印机通常使用“HP Jetdirect”协议(也称为“Raw”)进行通信。
我有一个带有 AIX 5 的 RS/6000,它可以查找并与任何类型的“自主”网络打印机配合使用。我想通过 Linux(最好是 Debian)在网络中公开一个 USB 打印机,就像我可以在 AIX 中访问的任何普通网络打印机(自治设备)一样。
编辑: 我需要在 AIX 中做类似的事情,其中 '我的打印机 IP' 是 Linux IP:
$ netcat my_printer_ip 9100
$ Hello remote USB printer plugged in a Linux !
$ <Ctrl+D>
答案1
我了解网络打印机使用名为 RAW(或 Jetdirect)的协议,是否正确?
是的。有两种用于打印作业的网络协议至今仍然相关:LPD,在 TCP 端口 515 上运行,并且捷特直航,运行在 TCP 端口 9100 上。LPD 是伯克利在过去为 BSD UNIX 设计的。它现在几乎已经过时了,但它仍然可以在许多打印机上使用,大概是为了与旧服务器兼容。 JetDirect 是 HP 在 20 世纪 90 年代初设计的,它比 LPD 更简单,速度也更快。只要可用,您就应该使用 JetDirect。
我有一个带有 AIX 5 的 RS/6000,它可以查找并使用任何类型的“本机”网络打印机。我想在网络中公开一个 USB 打印机,如网络打印机(自主设备),使用 Linux(最好是 Debian)来做到这一点。
在 Linux 计算机上安装 CUPS,并将打印机连接到它。你甚至不需要一台完整的机器,一个 Raspberry Pi 或类似的机器,或者一个带有 USB 端口并运行 OpenWRT 或 DD-WRT 的家庭路由器,就可以正常工作。
答案2
答案3
经过一些研究和尝试...
这些“网络打印机设备”可以实现一些协议,其中之一称为“HP JetDirect”,也称为“Raw”、“JetDirect”,或者只是“9100”。它似乎是网络打印机支持的最常见的协议。
网络打印机配置示例:
JetDirect 协议只是一个普通网络流,而不是真正的协议,至少在我的测试中是这样。因此,您不需要 CUPS 也不需要任何类型的打印机引擎来让 Linux 表现得像网络打印机,您所需要的只是一个“网络流服务器”,例如 inetd(或 xinetd),来侦听端口 9100 并将该流重定向到打印机流。
考虑 port 中的打印机流/dev/lp0
,我们可以在其中执行类似的操作:
$ echo "Hi local legacy printer !" >/dev/lp0
现在我们可以将来自端口 9100 的流重定向到/dev/lp0
,只需使用老式的 inetd:
9100 stream tcp nowait cat > /dev/lp0
因此,在任何其他远程系统(如 AIX)中,我们可以将传统并行(或 USB)打印机插入 Linux,使其像网络打印机一样工作:
$ netcat linux_ip 9100
$ Hello remote Parallel printer plugged in a Linux !
$ <Ctrl+D>
当然,除了其他解决方案之外,还有一些并发问题可以通过 CUPS 在假脱机程序下配置本地打印机来解决。
这对我有用!
答案4
这个非常古老的程序将 /dev/lp 上的本地打印机导出到 localhost:9100。我必须编辑 Makefile 以支持旧的编程标准。对于较新的程序,可能还有其他方法可以做到这一点。我想知道: lp_server-1.1.6源代码