Mac OS X 10.9.5 (Mavericks) でリバース Telnet (Telnet to COM) を設定しようとしています。Mac はシリアル デバイスに接続されています。画面を使用して Mac からシリアル デバイスにアクセスすることに問題はありません。
screen /dev/cu.USBserial
ただし、Telnet 経由でデバイスにリモートでアクセスしたいと考えています。
Netcat ( nc
) の使用を試みたのですが、あまり成功しませんでした。使用したコマンドは次のとおりです。
nc -l 9999 > /dev/cu.USBserial < /dev/cu.USBserial
そして、デバイスに Telnet できます。ただし、次の 2 つの理由で機能しません。
- 対話型ユーザー インターフェイスの場合、入力は基本的に を押すまで行バッファリングされますreturn。
- 入力した内容はすべてエコーバックされます。現実世界では、デバイスが入力した文字をエコーバックするはずです。
正しいやり方は何でしょうか?
答え1
最も簡単な方法:
telnet
(というかssh
)Macにscreen /dev/cu.USBserial
コマンドを入力してください
さて、Mac を COM ポートに直接接続したい場合、または他のユーザーが接続できるようにして他の操作は何も行わないようにしたい場合は、次の方法があります。
- Mac に専用のユーザーを作成します。「comport」という名前を付けて、このユーザーとしてログインします。
このユーザーの接続スクリプトを作成します。 という名前のファイルを作成し
/Users/comport/log2com.sh
、次の行を挿入します。#!/bin/bash /usr/bin/screen -R /dev/cu.USBserial
ターミナルで次のコマンドを実行して、スクリプトの実行を許可します。
chmod +x /Users/comport/log2com.sh
最後に、このスクリプトをユーザーのログイン シェルとして設定します。そのためには、システム環境設定 > ユーザーとグループ のユーザー リストで、ユーザーを右クリックして [詳細オプション] を選択します。次に、[シェル] フィールドに と入力し、[
/Users/comport/log2com.sh
OK] をクリックします。
ssh
これで完了です。これで、Mac 上のこのログインにTelnet (むしろ推奨します!) して、画面に直接アクセスできるようになりました。
終了するには、画面上の方法 (通常はCtrl+ A、次に:quit
Return) を実行する必要があることに注意してください。
これを OSX 10.10.5 でテストしました。うまくいったかどうか教えてください。
答え2
解決策を見つけました。Python PySerial パッケージには rfc2217 クラスがあります。telnet サーバーとして機能するサンプル アプリがあります。
https://pyserial.readthedocs.org/en/latest/examples.html
$ python rfc2217_server.py /dev/tty.serial
telnet 接続を可能にするポート 2217 を開きます。まさに私が求めていたものです。