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

Luc*_*ano 7 networking aix cups printer

是否可以将 Linux 计算机配置为“网络打印机设备”?我有一台 USB 打印机,打算像本地网络打印机设备一样在网络中共享。

那可能吗?如何?

注意: “自主”网络打印机通常使用“HP Jetdirect”(也称为“Raw”)协议进行通信。

我有一个带有 AIX 5 的 RS/6000,它可以找到并与任何类型的“自主”网络打印机配合使用。我想通过 Linux(最好是 Debian)在网络中公开一个 USB 打印机,就像我可以在 AIX 中访问的任何普通网络打印机(自治设备)一样。

编辑: 我需要在 AIX 中做类似的事情,其中​​“ my_printer_ip ”是 Linux IP:

$ netcat my_printer_ip 9100
$ Hello remote USB printer plugged in a Linux !
$ <Ctrl+D>
Run Code Online (Sandbox Code Playgroud)

lcd*_*047 5

我了解网络打印机使用名为 RAW(或 Jetdirect)的协议,是否正确?

是的。有两种用于打印作业的网络协议至今仍然相关:LPD(在 TCP 端口 515 上运行)和JetDirect(在 TCP 端口 9100 上运行)。LPD 是 Berkeley 在过去为 BSD UNIX 设计的。它现在几乎已经过时了,但它仍然可以在许多打印机上使用,大概是为了与旧服务器兼容。JetDirect 是 HP 在 20 世纪 90 年代初设计的,它比 LPD 更简单,速度也更快。只要可用,您就应该使用 JetDirect。

我有一个带有 AIX 5 的 RS/6000,它可以查找并使用任何类型的“本机”网络打印机。我想在网络中公开一个 USB 打印机,如网络打印机(自主设备),使用 Linux(最好是 Debian)来做到这一点。

在 Linux 计算机上安装 CUPS,并将打印机连接到它。你甚至不需要一台完整的机器,一个 Raspberry Pi 或类似的机器,或者一个带有 USB 端口并运行 OpenWRT 或 DD-WRT 的家庭路由器,就可以正常工作。


Luc*_*ano 1

经过一些研究和尝试...

这些“网络打印机设备”可以实现一些协议,其中之一称为“HP JetDirect”,也称为“Raw”、“JetDirect”,或者简称为“9100”。它似乎是网络打印机支持的最常见的协议。

网络打印机配置示例: 网络打印机配置示例

JetDirect 协议只是一个普通的网络流,而不是一个真正的协议,至少在我的测试中是这样。因此,您不需要 CUPS 也不需要任何类型的打印机引擎来让 Linux 表现得像网络打印机,您所需要的只是一个像 inetd(或 xinetd)这样的“网络流服务器”,来监听端口 9100 并重定向它流到打印机流。

考虑 port 中的打印机流/dev/lp0,我们可以在其中执行类似的操作:

$ echo "Hi local legacy printer !" >/dev/lp0
Run Code Online (Sandbox Code Playgroud)

现在我们可以将来自端口 9100 的流重定向到/dev/lp0,只需使用老式的 inetd:

9100 stream tcp nowait cat > /dev/lp0
Run Code Online (Sandbox Code Playgroud)

因此,在任何其他远程系统(如 AIX)中,我们可以将传统并行(或 USB)打印机插入 Linux,使其像网络打印机一样工作:

$ netcat linux_ip 9100
$ Hello remote Parallel printer plugged in a Linux !
$ <Ctrl+D>
Run Code Online (Sandbox Code Playgroud)

当然,除了其他解决方案之外,还有一些并发问题可以通过 CUPS 在假脱机程序下配置本地打印机来解决。

这对我有用!