Je rencontre un problème avec les commandes invoquées par sudo en utilisant à la fois ProcessBuilder et Runtime.exec. Je pense que ProcessBuilder est globalement la meilleure solution, mais les deux produisent le même résultat - ils exécutent des commandes shell bien sur Ubuntu, mais si je tente de faire une commande sudo -i mysql par exemple:Exécution de la commande Java et sudo
public static void runProcess(String[] process) {
String s = null;
try {
Process p = new ProcessBuilder(process).start();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((s = stdInput.readLine()) != null) { System.out.println(s); }
while ((s = stdError.readLine()) != null) { System.out.println(s); }
} catch (IOException e) { e.printStackTrace(); }
}
Ces 2 commandes travail:
String[] cmdArgs0 = { "sudo", "echo", "Done" };
runProcess(cmdArgs0);
String[] cmdArgs1 = { "bash", usbDrivePath+"/ASWebUI/Install.sh" };
runProcess(cmdArgs1);
Mais cela ne:
String[] cmdArgs2 = { "sudo", "-i", "mysqldump", "Core", ">", cachePath+"/SQLDumps/Core.sql" };
runProcess(cmdArgs2);
erreur:
mesg: ttyname failed: Inappropriate ioctl for device
mysqldump: Couldn't find table: ">"
Merci! Ça a marché. – user3260912
@ user3260912 Content de vous aider! Veuillez vérifier ma dernière modification à la réponse, j'ai changé 'Redirect.appendTo (dumpFile)' en 'Redirect.to (dumpFile)' puisque le premier correspond à '>>' au lieu de '>'. –