SSH не работает с использованием Apache Commons-Exec

Я пытаюсь запустить команду на удаленной машине, используя ssh. Не знаю почему, но кажется, что команда не выполняется. Вот как я строю команду:

    CommandLine cmdLine = new CommandLine("ssh");
    cmdLine.addArgument("-i");
    cmdLine.addArgument("${key}");
    cmdLine.addArgument("root@myhostname.com");
    cmdLine.addArgument("rm");
    cmdLine.addArgument("${dest}");

    Map map = ImmutableMap.builder()
            .put("key", /a/mykey.key)
            .put("dest", /a/myfile.file)
            .build();

    cmdLine.setSubstitutionMap(map);

    DefaultExecutor executor = new DefaultExecutor();
    executor.setExitValue(0);
    executor.execute(cmd);

Я попытался скопировать команду до ее выполнения и выполнить ее вручную, и она сработала. Я также попытался добавить handleQuoting=false в операторе addArgument, но это не сработало. Как ни странно, выполнение аналогичной команды с использованием scp работает:

    CommandLine cmdLine = new CommandLine("scp");
    cmdLine.addArgument("-i");
    cmdLine.addArgument("${key}");
    cmdLine.addArgument("${file}");
    cmdLine.addArgument("root@myhostname.com:/somepath");

    Map map = ImmutableMap.builder()
            .put("key", /a/mykey.key)
            .put("file", /a/myfile.file)
            .build();

    cmdLine.setSubstitutionMap(map);

Также я заметил, что работает то же самое с помощью Runtime.exec(...).

Любая идея, почему команда ssh не выполняется с помощью commons-exec?

0 ответов

Другие вопросы по тегам