2014-03-06 158 views
0

因此,我有兩臺Linux機器,我在機器A上運行一個java代碼,並在機器B上運行一些模擬。我可以通過結果返回的方式是什麼在計算完成時加工A(我不想使用數據庫)。如果按預期執行,結果主要是每個模塊的狀態消息。還有如何跟蹤機器B模擬運行的狀態(我可以檢查進程的PID,如果存在,那麼作業正在運行,但有沒有更好的方法)。計算機B具有一定的安全限制,就像我不能打開一個端口等在兩臺機器上運行的進程之間的通信

+1

您使用jsch運行你的ssh?如果是這樣的話,如果你創建了一個'shell'通道,你可以使用通道輸出流回寫結果 –

+1

在機器A上使用消息使用者來監聽在SSH腳本完成時會發布消息的主題。 –

回答

1

使用jSCH

JSch shell = new JSch(); 
    session = shell.getSession(userName, serverIP, 22); 
    session.setPassword(password); 

     session.setTimeout(timeout); 
     java.util.Properties config = new java.util.Properties(); 
     config.put("StrictHostKeyChecking", "no"); 
     session.setConfig(config); 
     session.connect();  

     channel = session.openChannel("shell"); 
     input = new InputStreamReader(channel.getInputStream(), encoding); 
     output = new PrintStream(channel.getOutputStream()); 

     channel.connect(); 

      output.write ("/home/test/runCommand"); 

      // result 
      while ((ch = input.read() != -1) {....} 
+0

謝謝@ user2310289 – kunal

相關問題