2011-06-21 57 views
2

我的任務是設置一個自動化系統,它必須在Linux服務器上做一些事情,從我的理解和研究到目前爲止,都無法從Java內部輕鬆完成,例如安裝硬盤驅動器在Linux服務器上。我使用了一些基於Java庫的SSH,但發現它們有點難以可靠地使用。我可以直接在Linux服務器上運行java應用程序,所以我想知道是否有更好的方式來通過SSH進行所需的服務器調用。任何意見,將不勝感激Java,從Java代碼中控制Linux服務器的正確方法?

回答

2

Runtime.getRuntime()。exec(「some linux command」);


例子:

[email protected]:/tmp$ cat /tmp/test.java; javac test.java; java test 
import java.net.*; 
import java.io.*; 
public class test { 
public static void main(String args[]) throws Exception { 
    String line; 
    Process process = Runtime.getRuntime().exec("ls"); 
    BufferedReader process_out = new BufferedReader(
    new InputStreamReader(process.getInputStream())); 
    while ((line = process_out.readLine()) != null) 
    System.out.println(line); 
    process.waitFor(); 
} 
} 
bin 
hash.class 
hash.java 
hsperfdata_jcomeau 
profile 
test.class 
test.java 
tmpe66f4e 
tmplvOd2n 
tmpn8FI2Q 
tmpoYaciK 
tmpx27knK 
vmlinux 
繁體中文.txt 
+0

另外,這可以給服務器迴應嗎? – Rick

+1

響應以Unix程序的常用方式進行。您可以從程序中讀取標準輸出和標準錯誤,並獲取退出代碼。 –

+0

它適用於我,但是我想知道有沒有辦法像''cd/some/directory''那樣執行命令,以便在下次運行命令時進入該目錄。此外,我想知道如果我可以做一些'su someuser',然後就可以輸入密碼,這樣我就可以繼續以該用戶的身份進行輸入,我已經嘗試過這種方式,但它不起作用 – Rick

1

有很多的Linux WebAdmin的工具,使這種管理 - 谷歌的最高命中是Webmin - 寫在Perl或PHP。除非你需要在服務器上集成現有的Java代碼,否則我認爲我會考慮適應其中的一種,而不是從一開始就用真正不適合這種類型的任務的語言開始。

不要低估這個系統的潛在安全風險 - 構建他人工作的另一個好處。

+0

我只是需要一種方法來從Java代碼控制它,如果像Webmin這樣的工具有一個我可以通過Java訪問的API,那麼我就需要這個API – Rick

+0

Anonymous downvote?有人認爲這是不好的建議? –

相關問題