如何在 Mac OS X 上設定反向 Telnet

如何在 Mac OS X 上設定反向 Telnet

我正在嘗試在 Mac OS X 10.9.5 (Mavericks) 上設定反向 Telnet(Telnet 到 COM)。 Mac 連接到串行設備。我使用螢幕從 Mac 存取串行設備沒有問題:

screen /dev/cu.USBserial

但是,我想透過 Telnet 遠端存取該裝置。

我嘗試使用 Netcat ( nc) 並取得了有限的成功。我使用的命令是:

nc -l 9999 > /dev/cu.USBserial < /dev/cu.USBserial

然後我可以 Telnet 到該設備。然而,它不起作用有兩個原因:

  1. 對於互動式使用者介面,輸入本質上是行緩衝的,直到我點擊return
  2. 我所有的輸入都會得到迴響。在現實生活中,該裝置應該能夠回顯我輸入的字元。

正確的做法是什麼?

答案1

最簡單的方法:

  1. telnet(或更確切地說ssh)到您的 Mac
  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. 最後,將此腳本設定為您使用者的登入 shell。為此,在「系統偏好設定」>「使用者和群組」中的使用者清單中,右鍵單擊該使用者並選擇「進階選項」。然後,在「shell」欄位中輸​​入/Users/comport/log2com.sh,然後按一下「確定」。

就是這樣。現在,您可以在 Mac 上透過 telnet(我寧願推薦ssh!)登入此帳戶,直接進入螢幕​​。

請注意,要退出,您需要透過螢幕方式進行操作(通常是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。這正是我想要的。

相關內容