2012-10-11 141 views
1

我是新來的這種java與Unix的集成。如何通過java將參數傳遞給shell命令?

什麼,我試圖做的是

String command="passwd"; 
    Runtime rt=Runtime.getRuntime(); 
    try { 
     Process pc=rt.exec(command); 
     try { 
      pc.waitFor(); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     BufferedReader buf = new BufferedReader(new InputStreamReader(pc.getInputStream())); 

     String line = ""; 

     while ((line=buf.readLine())!=null) { 

     System.out.println(line); 

     } 
     BufferedReader buf1 = new BufferedReader(new InputStreamReader(pc.getErrorStream())); 

     String line1 = ""; 
     while ((line1=buf1.readLine())!=null) { 

      System.out.println("Error--"+line1); 

      } 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
     System.out.println("IOException---"+e1.getMessage()); 
    } 

現在,當我試圖通過「passwd文件」命令的UNIX環境進入掛起模式。

我想知道如何傳遞舊密碼,新密碼並使用java代碼確認新密碼到shell。

回答

2

您需要將其傳遞給使用名爲Process.getOutputStream()的混淆名稱。從文檔:

獲取子流程的輸出流。輸出到流 管道輸送到由需要捕獲的過程 該Process對象

注意所表示的過程的標準輸入流的stdout /犯錯同時,以避免阻塞。有關更多詳細信息,請參閱this answer

1

有一個實用程序稱爲期望。如果你安裝了你可以傳遞任何東西的論點。所以構造成字符串執行 String ConstructedCommand; 進程p = Runtime.getRuntime()。exec(ConstructedCommand);

這個鏈接將是值得您的需要。 http://linux.die.net/man/1/expect

相關問題