Olla Leute,
ich habe ein simples Script namens "mySpecialFind" (Rechte: 755) in /usr/bin hinterlegt und habe folgenden Code:
public static void main(String argv[]) throws IOException {
Runtime r = Runtime.getRuntime();
Process p;
BufferedReader is;
String line;
String c = "/usr/bin/ssh -p 123 ben@123.123.123.123 \"/usr/bin/mySpecialFind '/home/ben/Desktop'\"";
p = r.exec(c);
System.out.println("In Main after exec");
is = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((line = is.readLine()) != null)
System.out.println(line);
System.out.println("In Main after EOF");
System.out.flush();
try {
p.waitFor();
} catch (InterruptedException e) {
System.err.println(e);
return;
}
System.err.println("Process done, exit status was " + p.exitValue());
return;
}
Die Ausgabe dessen ist:
In Main after exec
bash: /usr/bin/mySpecialFind '/home/ben/Desktop': No such file or directory
In Main after EOF
Process done, exit status was 127
127 bedeutet, dass der Befehl inexistent ist.
Wenn ich aber genau denselben String in die Bash eingebe, dann spielt sich alles völlig korrekt ab. Wieso?
(PS: Ich habe ssh ohne Passwort)