我正在尝试在 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
,然后单击“确定”。
就是这样。现在您可以通过 telnet(我更推荐ssh
!)登录到 Mac 上的此登录名,直接进入屏幕。
请注意,要退出,您需要按照屏幕方式进行(通常是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。这正是我想要的。