如何在 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,然后单击“确定”。

就是这样。现在您可以通过 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。这正是我想要的。

相关内容