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?