使用Java的间接telnet连接 脚本

使用Java的间接telnet连接 脚本,java,ssh,telnet,jsch,Java,Ssh,Telnet,Jsch,我在一个Java项目中,我们必须与其他机器的CLI进行通信。不幸的是,我们无法直接连接到这些其他机器,另一个坏运气是它们只支持telnet。因此,我们有以下设置,这是刻在石头上的(当然): 应用网关机器\u 001 (10.0.0.1) (192.168.1.1) (192.168.2.1) (192.168.2.2) ( ... ) 可以通过SSH或telnet手动连接到网关(例如使用PuTTY),tel

我在一个Java项目中,我们必须与其他机器的CLI进行通信。不幸的是,我们无法直接连接到这些其他机器,另一个坏运气是它们只支持telnet。因此,我们有以下设置,这是刻在石头上的(当然):

应用网关机器\u 001
(10.0.0.1)                         (192.168.1.1)               (192.168.2.1)
(192.168.2.2)
(    ...    )
可以通过SSH或telnet手动连接到网关(例如使用PuTTY),telnet从此外壳连接到其中一台机器,并使用其CLI。由于我们希望通信自动进行,应用程序必须能够自己与机器进行通信;所以我需要一个程序化的解决方案

到目前为止我都试过了 在互联网上做了一些研究之后,我发现了一个名为的图书馆,看起来很有希望,但我遇到了一个不好的问题。当应用程序连接到网关时,telnet命令以及目标机器的整个CLI从应用程序的角度来看都是一个命令。因此,如果需要的话,我必须处理非终止的InputStream、非同步的OutputStream和线程

下一次尝试是建立一个从L127.0.0.1:1234到192.168.2.1:23的SSH隧道(通过网关),但使用此配置,无法将telnet连接到127.0.0.1:1234(无论是编程还是手动)

实际问题
如何让我的应用程序通过telnet通过网关与机器对话?

如果我没记错的话,我确实看到一些JSch控制台在播放演示。所以不要放弃JSch,您可以使用原始套接字自己实现telnet。当你这样做的时候,你会意识到telnet很难被称为一个协议——它只不过是发送和接收原始终端的输入和输出。另一方面,SSH可能会变得更复杂。@Philipp Telnet要比服务器开始发送Telnet命令(IAC…)时复杂得多。@MarkusR我也有类似的问题。你不能开发一个在
网关
机器上运行的应用程序吗?如果可以的话,只要向这个程序发送请求,它就会telnet
machine_001
@JoopEggen:我们已经从JSch切换到apache.commons.net,但我会记住JSch在未来的项目中@Philipp:这正是我们的遗留实现所做的(大约50k行代码o.o)我们想用一个简单易用的库来代替@Maxbester:不幸的是,在我们的应用程序之外无法进行任何更改@所有:感谢您的输入,我已经成功地用apache.commons.net实现了一些不错的东西(手动处理
InputStream
OutputStream
application <---- telnet or ssh ----> gateway <---- telnet ----> machine_001
(10.0.0.1)                         (192.168.1.1)               (192.168.2.1)
                                                               (192.168.2.2)
                                                               (    ...    )