Hallo Forum
Ich programmierte ein Shell Script, mit dem ich das die Rechner in meinem Netzwerk durchpinge. Die Rückgaben erfolgen dann per echo auf der Shell.
Wenn ein Fehler aus der Shell auftritt, dann habe ich es schon geschafft diesen über eine Fehlerbehandlung auszugeben. Jedoch ist dann das Script schon abgelaufen und der Fehler geht über die Fehlerpipe in einen BufferedReader und wird in Eclipse mit einer bash Fehlernummer angezeigt.
Wie ist das jedoch zu machen, wenn ich simultan die richtigen Rückgaben mit einlesen und ausgeben will, bevor das Shell Programm beendet ist? Das Problem tritt auf, wenn es sich um eine Endlosschleife handelt, wie z.B. ein ununterbrochener Ping Befehl, der ja sekündlich eine Rückgabe auf der Shell machen würde...
Zudem ist das Problem, nachdem das Script durch ist, bekomme ich in Eclipse ein knuffiges, aber erfreuliches geliefert:
Ich hoffe man versteht mich worauf ich hinaus will, da es schwierig zu beschreiben ist, und ich noch nicht der absolute OS Geek bin, der die Zusammenarbeit des JRE/JVM mit dem OS durchschaut hat.
Hier das Shell-Script:
Hier der Java-Code:
Wie macht man das, daß die "guten" Rückgaben auch angezeigt werden? Danke Euch...
Viele Grüße,
Semo
EDIT: Tag-Korrektur
Ich programmierte ein Shell Script, mit dem ich das die Rechner in meinem Netzwerk durchpinge. Die Rückgaben erfolgen dann per echo auf der Shell.
Wenn ein Fehler aus der Shell auftritt, dann habe ich es schon geschafft diesen über eine Fehlerbehandlung auszugeben. Jedoch ist dann das Script schon abgelaufen und der Fehler geht über die Fehlerpipe in einen BufferedReader und wird in Eclipse mit einer bash Fehlernummer angezeigt.
Wie ist das jedoch zu machen, wenn ich simultan die richtigen Rückgaben mit einlesen und ausgeben will, bevor das Shell Programm beendet ist? Das Problem tritt auf, wenn es sich um eine Endlosschleife handelt, wie z.B. ein ununterbrochener Ping Befehl, der ja sekündlich eine Rückgabe auf der Shell machen würde...
Zudem ist das Problem, nachdem das Script durch ist, bekomme ich in Eclipse ein knuffiges, aber erfreuliches geliefert:
Code:
Process exitValue: 0
Ich hoffe man versteht mich worauf ich hinaus will, da es schwierig zu beschreiben ist, und ich noch nicht der absolute OS Geek bin, der die Zusammenarbeit des JRE/JVM mit dem OS durchschaut hat.
Hier das Shell-Script:
Code:
#!/bin/bash
for ip in $(seq 1 254)
do
( ping -a -q -c 1 -W 1 192.168.1.$ip >/dev/null && echo 192.168.1.$ip ) &
done
Hier der Java-Code:
Java:
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 /home/user/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();
}
}
}
Wie macht man das, daß die "guten" Rückgaben auch angezeigt werden? Danke Euch...
Viele Grüße,
Semo
EDIT: Tag-Korrektur
Zuletzt bearbeitet: