3

JMX でいくつかのことを行うステップを自動化しようとしています。

開発環境で動作します。しかし、ファイアウォールの背後で保護されている本番環境になると、SSH トンネルを作成する必要があり、JMX コンソールにアクセスできるのは私だけです。

以前は、パテまたは ssh を使用してトンネルを作成し、Java プログラムをローカルで実行していました。1〜2台のホストを使用したので、簡単でした。今では最大10ホストになりました。毎回トンネルを作成したくないので、プログラムを切断して実行します。

私がやりたかったのは、JSchを使用してSSHトンネルを自動的に作成し、JMXをJavaプログラムに接続することです。私はこれをやろうとしましたが、うまくいきません。

java.rmi.ConnectException: 接続がホストへの接続を拒否しました: localhost; を取得しています。ネストされた例外: java.net.ConnectException: 接続が拒否されました: 接続

これを行うことは可能ですか?

4

1 に答える 1

1

Runtime.exec()ssh の起動に使用しないのはなぜですか? 例:

public static void main(String[] args) {
  String[][] data = new String[][]{new String[]{"user@server1", "2000:server1:30"},
          new String[]{"user2@server4", "2000:server4:30"}};
  Process[] processes = new Process[data.length];
  for (int i=0; i<data.length; i++) {
    processes[i] = Runtime.getRuntime().exec("ssh", data[i][0], "-L", data[i][1], "-N");
  }
  //do something else, for example, wait for user interaction here
  for (int i=0; i<data.length; i++) {
    processes[i].destroy();
  }
}
于 2010-11-01T16:40:54.857 に答える