2017-01-11 12 views
0

javaでサーバー監視アプリケーションを作成します。Linuxシェルスクリプトexec(wget)in java

I EXECシェルスクリプト(wgetの--no-キャッシュ-t 1 -T 1000年--spider SERVERURL 2> & 1 | grepを 'HTTP')

が、私は結果を得る

が、Javaの幹部でシェルスクリプト..

私はゲイン結果を `tの...

ソースコード

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

...

は私を助けて!

+0

これは、シェルによる解釈(パイプとリダイレクトのため)が必要です。コマンドを含むスクリプトを呼び出すか、インタプリタに渡します。 – teppic

+0

問題を解決しました。ありがとうございます! –

答えて

1

あなたコマンドは、シェルスクリプトで、解釈のためシェルに渡す必要があります。

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

シェルプロセスに引数を渡すために、アレイの使用に注意してください。それがなければ、コマンド文字列は、あなたが望むものではないインタプリタに渡される前にトークン化されます。

+0

問題を解決しました。ありがとうございます! –