SSHトンネルを介して/ devディレクトリのデバイスにアクセスし、それをローカルのように使用する方法はありますか? [コピー]

SSHトンネルを介して/ devディレクトリのデバイスにアクセスし、それをローカルのように使用する方法はありますか? [コピー]

あるコンピュータがディレクトリ内のデバイスを別のコンピュータと共有し、別のコンピュータが/dev/(ローカルの場合)そのデバイスと対話する方法はありますか? SSHトンネルのようなものですか?

たとえば、カメラ、Arduinoへのシリアル接続、さらにコンピュータの/dev/random

答え1

要するに、いいえ。デバイスノードと対話する方法は、実際のファイルで実行できるよりも「豊富」であり、リモートシステムのカーネルがローカルプロセスメモリにアクセスできない場合は不可能です。ネットワーク)。

使用したいものの多くは、特定の時点で不合理に高い帯域幅要件(例:生モードの高品質カメラ)、低レイテンシ要件(コンピュータ側で何が起こると予想されるUSBマスデバイス)を持っていることは言うまでもないありません。これは、時間内)またはネイティブデバイスレベルでネットワーク操作を無効にする他の機能的側面です。

このため、特定のデバイスクラスでは、デバイスの近くで実行する必要があるタスクとリモートで実行できるタスクを区別することができ、他の方法もあります。たとえば、プリンタはCUPSを使用してネットワーク経由で共有でき、サウンドはパイプライン、jackdまたは他のデーモン用のデバイス、VLCを使用するビデオデバイス、ファイルシステムを使用するストレージデバイス、またはNFS、CIFSなどを使用します。ブロックデバイス(例:Ceph)

シリアルポートは抽象化が簡単です。そのポートを持つコンピュータに設定し(主に開く、ボーレート設定)、最小限のネットワークデーモンを使用して読み書きします。

実際、産業オートメーションでは、ネットワークを介して何とかアドレス指定できるUARTポートを持つことが非常に一般的なパターンです。 Linuxでは、socatプログラムも同様のことができます。

答え2

  1. ブロックデバイスの取り付け

いいえ、できませんssh。サーバーにデバイスをインストールし、リモートの場所sshfs をローカルの場所にマウントするために使用できます。

  1. インタラクティブ

sshはい、リモートコマンドを使用してデータを送受信できます。

ssh user@server 'cat /dev/random'

サーバーデバイスの出力を提供しますrandom。データを送信するのと同じ方法:

ssh user@server 'cat - >/dev/null' <<<"Hello"

これは「地元のようですか?」しかし、計画によってはこれで十分かもしれません。

関連情報