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>
いくつかの研究と試みの後...
これらの「ネットワークプリンタデバイス」は、「Raw」、「JetDirect」、または「9100」とも呼ばれる「HP JetDirect」と呼ばれるプロトコルの1つであるプロトコルを実装できます。ネットワークプリンタでサポートされている最も一般的なプロトコルのようです。
ネットワークプリンター構成のサンプル:
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で処理できる同時実行の問題があります。
それは私のために働いた!
ネットワークプリンターが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を実行しているホームルーターは問題なく動作します。
[〜#〜] cups [〜#〜] を使用すると、(少なくとも)IPP、LPD、およびsambaプロトコルを使用してプリンターを共有することができます。 IPPはほとんどのオペレーティングシステムでサポートされており、IBMはIPPを考案した Printing Working Group に参加していたため、AIXでもサポートされる可能性があります。
また、sambaはAIXプロトコルを備えているため、どちらか一方が機能するはずです。 AIXを検索
しかし、私が遭遇したどのドキュメントもAIXバージョンを参照していないため、AIX 5がサポートされているかどうかはわかりません。
とにかくそれが機能する方法は、CUPSがインストールされているサーバーにプリンターを接続し、共有方法、ブロードキャスト設定などを選択することです。それは簡単です。その後、クライアントはそれに接続でき、ネットワークプリンターとして表示されます。
あなたはおそらくインストールしたいと思うでしょう [〜#〜] cups [〜#〜] ; このページ によると、AIXでも確実に利用できます。
プリンタを認識して使用するように設定したら、ネットワークで共有する方法について here を確認することをお勧めします。
または、 samba を使用してプリンターを共有することもできます。最近では、ほとんどのOSがプロトコルを話します。
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の回答と非常によく似ており、別の選択肢を提供するだけです。
この非常に古いプログラムは、/ dev/lp上のローカルプリンターをlocalhost:9100にエクスポートします。古いプログラミング標準をサポートするためにMakefileを編集する必要がありました。新しいプログラムでこれを行う方法は他にもあります。知りたい: lp_server-1.1.6ソースコード