# Shell Script in Java Class aufrufen



## Semox (24. Okt 2010)

Hallo Forum

Ich habe ein kleines Shellscript gebastelt und wollte dieses über ein Java-Programm zur Ausführung bringen. 

Über die Kommandozeile würde ich das normalerweise so machen:

```
~$: sh PingUptime.sh
```

Der dazugehörige Java Code sieht so aus:


```
package uptime;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Uptime {

	public static void main(String[] args) {
		try {
			// holt Informationen ueber die Laufzeitumgebung und beinhaltet kann
			// somit das Interface des OS benutzen.
			Runtime rt = Runtime.getRuntime();
			// Elternprozess proc wird gestartet und invoked einen Kindprozesses
			// und der wird weiter geforkt mittels Starten eines weiteren
			// Kind-Prozesses "sh pingUptime.sh"
			Process proc = rt.exec("sh pingUptime.sh");
			// holt ggf. Medlungen aus der Pipe des Fehlerstroms und schreibt
			// sie in den Eingabestrom der JVM
			InputStream stderr = proc.getErrorStream();
			BufferedReader br = new BufferedReader(
					new InputStreamReader(stderr));
			String line = null;
			while ((line = br.readLine()) != null)
				System.out.println(line);
			int exitVal = proc.waitFor();
			if (exitVal == 2) {
				System.out.println("Process exitValue = 2: File not Found");
			} else {
				System.out.println("Process exitValue: " + exitVal);
			}
		} catch (Throwable t) {
			t.printStackTrace();
		}
	}
}
```

Leider ist die Ausgabe meines Programms nicht das des Shell-Scripts, sondern der meiner Fehlerbehandlung:



> sh: Can't open pingUptime.sh
> Process exitValue = 2: File not Found



Liegt es u.U. daran, daß da ein Blank escaped werden muß, oder ist der Fehler ein anderer? Ich würde mich freuen, wenn mir jemand darauf eine Antwort geben könnte.

Viele Grüße,
Semo


----------



## XHelp (24. Okt 2010)

Ich vermute mal eher, dass es was mit dem Arbeitsverzeichnis zu tun hat. Versuch mal den absoluten Pfad anzugeben, sowas wie:

```
sh /home/user/PingUptime.sh
```


----------



## Semox (24. Okt 2010)

Gut vermutet. Das war der richtige Hinweis. Dankeschön.

Viele Grüße,
Semo


----------

