Linux 作为网络打印机设备(Raw,端口 9100)

Linux 作为网络打印机设备(Raw,端口 9100)

是否可以将 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

计算机辅助系统允许您通过(至少)IPP、LPD 和 samba 协议共享打印机。大多数操作系统都支持 IPP,IBM 是其中的一部分印刷工作组它提出了 IPP,因此 AIX 也可能支持它。

另外,samba 有 AIX 协议,因此其中之一应该可以工作。搜索 AIX

但是我遇到的所有文档都没有引用 AIX 版本,所以我不确定是否支持 AIX 5。

无论如何,它的工作方式是将打印机插入安装了 CUPS 的服务器,然后选择共享方法、广播设置等。这很简单。然后客户端可以连接到它,它将显示为网络打印机。

答案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源代码

相关内容