web-dev-qa-db-ja.com

Mac OSXでリバースTelnetを設定する方法

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つの理由で機能しません。

  1. インタラクティブなユーザーインターフェイスの場合、入力は基本的に、ヒットするまでラインバッファリングされます return
  2. 私の入力はすべて私にエコーバックされます。実生活では、デバイスは私の入力文字をエコーする必要があります。

それを行う正しい方法は何ですか?

7
some user

私は解決策を見つけました。 Python PySerialパッケージにはrfc2217クラスがあり、Telnetサーバーとして機能するサンプルアプリがあります。

https://pyserial.readthedocs.org/en/latest/examples.html

$ python rfc2217_server.py /dev/tty.serial

telnetが接続できるようにするポート2217を開きます。それはまさに私が欲しかったものです。

1
some user

最も簡単な方法:

  1. Macにtelnet(またはssh
  2. screen /dev/cu.USBserialコマンドを入力します

ここで、Macに直接comポートに接続したくない場合、または他の人にそれだけを許可したくない場合は、次の方法があります。

  1. Macで専用ユーザーを作成します。それを「comport」と呼び、このユーザーとしてログインしましょう。
  2. このユーザーの接続スクリプトを作成します。 /Users/comport/log2com.shという名前のファイルを作成し、次の行をそのファイルに挿入します。

    #!/bin/bash
    /usr/bin/screen -R /dev/cu.USBserial
    
  3. ターミナルで次のコマンドを実行して、スクリプトの実行を許可します。

    chmod +x /Users/comport/log2com.sh
    
  4. 最後に、このスクリプトをユーザーのログインシェルとして設定します。このためには、[システム環境設定]> [ユーザーとグループ]の[ユーザー]リストで、ユーザーを右クリックして[詳細オプション]を選択します。次に、[シェル]フィールドに/Users/comport/log2com.shと入力し、[OK]をクリックします。

それでおしまい。これで、Macでこのログインにtelnet(ssh!をお勧めします)して直接画面にアクセスできます。

終了するには、画面の方法で行う必要があることに注意してください(通常は Ctrl+A、次に:quit Return)。

OSX10.10.5でこれをテストしました。それがあなたのために働いたかどうか私に知らせてください。

4
CuriousFab