我正在尝试访问远程串行控制台(远程计算机上的 tty 端口),就像它在本地计算机上一样。这对于在我的计算机上运行串行端口专用应用程序是必需的。远程 tty 不可直接访问。它位于 OpenGear 后面,我只能使用 telnet 连接到实际 tty。如果有必要,我可以放下 OpenGear,只是为了确认没有它中间一切正常。
我想告诉我的应用程序使用像 /tmp/my_virtual_tty 这样的本地设备并透明地连接到 OpenGear telnet 端口。
有效的方法:
$ telnet remote_telnet remote_port
$ socat TCP:remote_telnet:remote_port TCP-LISTEN:10023
$ telnet localhost 10023
什么不起作用(似乎没有什么得到交换)但我希望它会:
$ socat tcp-connect:remote_telnet:remote_port PTY,link=$HOME/dev/vmodem0
$ screen $HOME/dev/vmodem0
同样的事情剩余序列:
$ remserial -d -r remote_telnet -p remote_port -l $HOME/dev/vmodem0 /dev/ptmx
$ screen $HOME/dev/vmodem0 .... # doesn't work either
这也不起作用,但由于我没有在任何地方指定任何 tty 速度,所以这可能有意义:
$ screen $HOME/dev/vmodem0 115200
我尝试了 socat 的 raw/rawer 选项,并使用了 OpenGear 的 raw 选项,但没有成功。我的问题是:我没有看到什么,远程串行端口转发/隧道的实际解决方案是什么?
答案1
这将无缝地工作,但只适用于原始服务器(在 Opengear 上),而不适用于 telnet 服务器:
$ socat -d TCP:server:port PTY,link=$HOME/dev/vmodem0,rawer,b115200,sane
$ screen ~/dev/vmodem0
就是这样。Remserial 的工作方式完全相同,因此无需专有驱动程序,除非您使用的是 Windows,甚至在 Windows 上也不需要。
事实上,OpenGear 为 Windows 和 Linux 提供了“端口共享”驱动程序,但它们非常过时且有缺陷:http://ftp.opengear.com/download/portshare/
!! 我遇到的第二个问题是,尽管原始服务器处于活动状态,但防火墙会阻止端口(注意:在 Opengear 中,设置访问端口权限是从与防火墙不同的网页完成的:)
答案2
无法直接回答您关于使用 remserial 或此类软件的问题,但对于这样的企业需求,我使用了一些为此类需求而创建的虚拟端口产品。它位于一个大型 RJ45 到串行适配器中。这样,您可以轻松地拥有任何 VM 或任何访问该串行端口/tty 的设备。
我知道有一种产品可以做到这一点,Perle iOLAN,但我猜还有很多这样的产品。
就我而言,它是一台通过 ESX 群集与串行调制解调器通信的虚拟机,这样虚拟机就可以在它运行的任何地方看到它。