シナリオ
私はJavaプロジェクトに参加しており、他のマシンのCLIと通信する必要があります。残念ながら、これらの他のマシンに直接接続することはできません。また、Telnetしかサポートしていないという不運もあります。したがって、次の設定があります。これは(もちろん)石に刻まれています。
application <---- telnet or ssh ----> gateway <---- telnet ----> machine_001
(10.0.0.1) (192.168.1.1) (192.168.2.1)
(192.168.2.2)
( ... )
SSHまたはtelnet経由でゲートウェイに手動で接続し(たとえば、PuTTYを使用して)、このシェルからマシンの1つにtelnetで接続し、CLIを操作することができます。通信を自動的に行うため、アプリケーションはそれ自体でマシンと通信できる必要があります。だから私はプログラムによる解決策が必要です。
私がこれまでに試したこと
インターネットで調べてみると、 JSchというライブラリが有望に見えましたが、邪悪な問題に遭遇しました。アプリケーションがゲートウェイに接続すると、telnetコマンド、つまりターゲットマシンのCLI全体が、アプリケーションの観点からは1つのコマンドになります。そのため、必要に応じて、終了しないInputStream、同期されていないOutputStream、およびスレッドと格闘する必要があります。
次の試みは、L127.0.0.1:1234から192.168.2.1:23(ゲートウェイ経由)へのSSHトンネルを確立することでしたが、この構成では、127.0.0.1:1234にtelnet接続することはできません(プログラムでも手動でも) 。
実際の質問
アプリケーションがtelnetを使用してゲートウェイ経由でマシンと通信できるようにするにはどうすればよいですか?