2017-01-11 2 views
0

Ich mache Server Monitoring-Anwendung in Java.Linux Shell-Skript Exec (wget) in Java

I Skript exec Schale (wget --no-cache -t 1 -T 1000 --spider ServerURL 2> & 1 | grep 'HTTP')

I Ergebnis gewinnen

aber in Java exec Shell-Skript ..

I don`t Gewinn Ergebnis ...

Quellcode

String command = "wget --no-cache -t 1 -T 1000 --spider " + monitering_url +" 2>&1 | grep 'HTTP'"; 
shellCmd(command); 
public static void shellCmd(String command) throws Exception { 
      Runtime runtime = Runtime.getRuntime(); 
      Process process = runtime.exec(command); 
        //Thread.sleep(5000); 
      InputStream is = process.getInputStream(); 
      InputStreamReader isr = new InputStreamReader(is); 
      BufferedReader br = new BufferedReader(isr); 
      String line; 
      while((line = br.readLine()) != null) { 
       System.out.println(line); 
      } 
     } 

monitering_url = serverURL

Ich möchte Druckergebnis ...

Hilfe me !!

+0

Das wird Interpretation von einer Shell (für die Leitung und Umleitung) benötigen. Rufen Sie entweder ein Skript auf, das die Befehle enthält, oder leiten Sie sie an den Interpreter weiter. – teppic

+0

Ich löste Problem Vielen Dank !! –

Antwort

1

Ihr Befehl ist ein Shell-Skript, und muss an eine Schale für die Interpretation übergeben werden:

Process process = runtime.exec(new String[] {"/bin/sh", "-c", command}); 

Beachten Sie die Verwendung des Arrays die Argumente an die Shell-Prozess zu übergeben. Ohne sie wird die Befehlszeichenfolge in Token umgewandelt, bevor sie an den Interpreter übergeben wird. Dies ist nicht das, was Sie wollen.

+0

Ich habe das Problem gelöst Vielen Dank !! –