Hallo zusammen,
ich stehe gerade vor einem Problem und brauche Eure Hilfe.
In einem projektspezifieschen Generierungsauftrag muss ein Skript ausgeführt werden. Das Skript muss einen Ordner erstellen, wenn der Ordner noch nicht existiert.
#!/bin/bash
if [ ! -d /mnt/company_tomcat/content ]
then
mkdir -p /mnt/company_tomcat/content
fi;
Die createContentFolder.sh habe ich unter "/opt/firstspirit5/shared/scripts/createContentFolder.sh" gespeichert.
Um Shell skript auszuführen habe ich die folgende FS-Script:
import java.util.*;
class StreamCapture extends Thread {
InputStream i;
boolean useErrlog;
StreamCapture(InputStream inputstream, boolean useErrorlog) {
i = inputstream;
useErrlog = useErrorlog;
}
public void run() {
try {
InputStreamReader reader = new InputStreamReader(i);
BufferedReader buffr = new BufferedReader(reader);
String l = null;
while ((l = buffr.readLine()) != null) {
if(useErrlog) {
context.logError(l);
} else {
context.logInfo(l);
}
}
//buffr.close();
//reader.close();
} catch (IOException ex) {
context.logError( " failed: " + ex);
}
}
}
// Hier wird das bzw. die Dateikommandos zusammengebaut
cmd = new Vector();
cmd1 = new Vector();
//für Linux:
cmd1.add("/opt/firstspirit5/shared/scripts/createContentFolder.sh");
cmd.add(cmd1);
for(c: cmd) {
cmdstr = "";
for (String s : c) {
cmdstr += " " + s;
}
cmdstr = "ProcessBuilder(" + cmdstr.substring(1) + ")";
context.logInfo(cmdstr);
try {
Process p = new ProcessBuilder(c).start();
InputStream is = p.getInputStream();
StreamCapture stdout = new StreamCapture(p.getInputStream(),false);
StreamCapture stderr = new StreamCapture(p.getErrorStream(), true);
stdout.start();
stderr.start();
result = p.waitFor();
if ( result == 0 ) {
context.logInfo("command completed");
} else {
context.logError("failed with exitcode " + result + " for " + cmdstr);
// wait 3 seconds as otherwise stderr is closed too early
// to get all error messages.
Thread.sleep(3000);
}
} catch (InterruptedException e) {
context.logError("timeout for " + cmdstr + ": " + e);
} catch (Exception e) {
context.logError("failed for " + cmdstr + ": " + e);
}
}
Fehlermeldung :
ERROR 23.06.2014 09:52:33.465 (de.espirit.firstspirit.impl.access.ScriptContextImpl): failed for ProcessBuilder(/opt/firstspirit5/shared/scripts/createContentFolder.sh): java.io.IOException: Cannot run program "/opt/firstspirit5/shared/scripts/createContentFolder.sh": error=13, Permission denied
Was mache ich falsch und wie kann man das Problem beheben.
Ich bedanke mich im Voraus.
Viele Grüße,
Emil.