我正在嘗試在 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 到該設備。然而,它不起作用有兩個原因:
- 對於互動式使用者介面,輸入本質上是行緩衝的,直到我點擊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
最後,將此腳本設定為您使用者的登入 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。這正是我想要的。