web-dev-qa-db-ja.com

ネットワークプリンタデバイスとしてのLinux(Raw、ポート9100)

Linuxコンピュータを「ネットワークプリンタデバイス」として機能するように構成することはできますか? ネイティブネットワークプリンターデバイスのように、ネットワークで共有する予定のUSBプリンターがあります。

それは可能ですか?どうやって?

注:「自律型」ネットワークプリンタは通常、「HP Jetdirect」プロトコル(「Raw」とも呼ばれます)と通信します。

私は、あらゆる種類の「自律型」ネットワークプリンターを検出して動作する、AIX 5を搭載したRS/6000を持っています。 Linux(できればDebian)を介して、AIXでアクセスできる通常のネットワークプリンター(自律型デバイス)と同様に、ネットワークにUSBプリンターを公開したいと思います。

編集: AIXでそのようなことをする必要があります。ここで、 'my_printer_ip'はLinux IPです。

$ netcat my_printer_ip 9100
$ Hello remote USB printer plugged in a Linux !
$ <Ctrl+D>
7
Luciano

いくつかの研究と試みの後...

これらの「ネットワークプリンタデバイス」は、「Raw」、「JetDirect」、または「9100」とも呼ばれる「HP JetDirect」と呼ばれるプロトコルの1つであるプロトコルを実装できます。ネットワークプリンタでサポートされている最も一般的なプロトコルのようです。

ネットワークプリンター構成のサンプル: A network printer configuration sample

JetDirectプロトコルは通常のネットワークストリームであり、少なくとも私のテストでは実際のプロトコルではありません。 つまり、ネットワークプリンターのようにLinuxを動作させるためにCUPSもプリンターエンジンも必要ありません、聞くために必要なのはinetd(またはxinetd)のような「ネットワークストリームサーバー」だけですポート9100に接続し、このストリームをプリンターストリームにリダイレクトします。

ポート/dev/lp0のプリンターストリームを考えてみます。

$ echo "Hi local legacy printer !" >/dev/lp0

これで、古い学校のinetdを使用するだけで、ポート9100に着信するストリームを/dev/lp0にリダイレクトできます。

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で処理できる同時実行の問題があります。

それは私のために働いた!

1
Luciano

ネットワークプリンターがRAW(またはJetdirect)と呼ばれるプロトコルを使用していることを理解していますが、それは正しいですか?

はい。現在も関連する印刷ジョブには、2つのネットワークプロトコルがあります。 [〜#〜] lpd [〜#〜] 、TCPポート515、および JetDirect 、TCPポート9100で実行。LPDはBerkeley for BSD UNIX for the oldで設計されました日々。現在はほとんど使用されていませんが、おそらく古いサーバーとの互換性のために、多くのプリンターで引き続き使用できます。 JetDirectは1990年代初頭にHPによって設計されたもので、LPDよりもシンプルで高速です。可能な場合は常にJetDirectを使用する必要があります。

あらゆる種類の「ネイティブ」ネットワークプリンターを検出して動作する、AIX 5を搭載したRS/6000を持っています。 Linux(できればDebian)を使用して、ネットワークプリンター(自律デバイス)のようなUSBプリンターをネットワークで公開します。

LinuxマシンにCUPSをインストールし、プリンターをそれに接続します。そのための完全なマシンも必要ありません。RaspberryPiなど、またはUSBポートを備え、OpenWRTまたはDD-WRTを実行しているホームルーターは問題なく動作します。

4
lcd047

[〜#〜] cups [〜#〜] を使用すると、(少なくとも)IPP、LPD、およびsambaプロトコルを使用してプリンターを共有することができます。 IPPはほとんどのオペレーティングシステムでサポートされており、IBMはIPPを考案した Printing Working Group に参加していたため、AIXでもサポートされる可能性があります。

また、sambaはAIXプロトコルを備えているため、どちらか一方が機能するはずです。 AIXを検索

しかし、私が遭遇したどのドキュメントもAIXバージョンを参照していないため、AIX 5がサポートされているかどうかはわかりません。

とにかくそれが機能する方法は、CUPSがインストールされているサーバーにプリンターを接続し、共有方法、ブロードキャスト設定などを選択することです。それは簡単です。その後、クライアントはそれに接続でき、ネットワークプリンターとして表示されます。

3
WhimsicalWombat

あなたはおそらくインストールしたいと思うでしょう [〜#〜] cups [〜#〜] ; このページ によると、AIXでも確実に利用できます。

プリンタを認識して使用するように設定したら、ネットワークで共有する方法について here を確認することをお勧めします。

または、 samba を使用してプリンターを共有することもできます。最近では、ほとんどのOSがプロトコルを話します。

0
Shadur

OP- 通常のネットワークプリンターと同様に、Linux(できればDebian)を介してネットワーク内のUSBプリンターを公開したいと思います

Lp_serverのヘルプは次のとおりです。

lp_server [-n port] [-w] [-d device] [-t stty_cmds]
Version lp_server-1.1.6
Export a printer by simulating an HP JetDirect interface.
-n connection port (default 9100)
-w open output device write only (default r/w)
-d device (default /dev/lp)
-t stty_cmds - stty commands to apply if device is serial port
-r remote_list - remote hosts allowed, in IP/netmask or hostname
       separated by commas. i.e. - 130.191.20.10/24,dickory would
       allow connections from subnet 130.191.20.0 (24 bit netmask)
       and Host dickory
-D level - set debug level

編集:

The lp_server will bind to the connection port, and wait for
an incoming connection.  After accepting a  connection, it 
opens the output device, (rw or write only as specified),
applys the stty options,  and then copies the connection output
to the device input and vice versa.

USBプリンターは、Linuxサーバー上でキャラクターデバイス/ devファイルとして表示され、lp_serverによってネットワークIPアドレスポート9100にエクスポートされます。ここで、AIXコンピューターは、Jet Direct印刷サービスのシミュレーションを見つけることができます。これは、ミニマリストのinetdの回答と非常によく似ており、別の選択肢を提供するだけです。

0
beginner6789

この非常に古いプログラムは、/ dev/lp上のローカルプリンターをlocalhost:9100にエクスポートします。古いプログラミング標準をサポートするためにMakefileを編集する必要がありました。新しいプログラムでこれを行う方法は他にもあります。知りたい: lp_server-1.1.6ソースコード