Мне нужно передать различные команды sh с помощью «sudo» и «su» из моего java-приложения в linux с помощью java.lang.ProcessBuilder.
Эти команды очень похожи, но некоторые работают, некоторые не работают,Когда я копирую и вставляю команду из журналов, ALL команда работает.
После этого:
processBuilder = new ProcessBuilder("sudo", "su", "- USER66 -c", "'ssh remote.mycomp.org < " + workingDir + "/script_cluster.sh'");
У меня есть:
su : option invalide -- ' '
Usage: (...)
Но вот этот:
processBuilder = new ProcessBuilder("sudo", "su", "- USER66 -c", "'scp remote.mycomp.org:" + clusterWorkingDir + "/" + filename + " " + workingDir + "/resultat/" + dir + "/'");
отлично работает.
И, как я уже говорил ранее, если я скопирую первую команду из моих журналов, она работает без предупреждения.
код регистрации:
logCommand(processBuilder);
private void logCommand(ProcessBuilder processBuilder) {
if (logger.isDebugEnabled()) {
logger.debug("Commande : {}", commandAsString(processBuilder.command()));
}
}
private String commandAsString(List<String> command) {
StringBuilder result = new StringBuilder();
for (String cmdElement : command) {
result.append(cmdElement).append(" ");
}
return result.toString();
}
Что мне здесь не хватает?Что еще я могу сделать, чтобы понять, что происходит?