2014-09-26 49 views
0

我使用java自動化ssh會話,使用此代碼我可以登錄並獲得屏幕上的輸出,但在此之後,我們進入應用程序後運行ssh會話,它不需要用戶名和密碼,因爲它需要像TAB,ENTER和功能鍵等鍵盤交互,所以有辦法發送鍵盤事件代替命令,以便自動化成功嗎?在java中使用jsch庫的ssh會話自動化

public class jschputty { 

public static void main(String args[]) 
{ 
String host="x.x.x.x"; 
String user="username"; 
String password="password"; 
String command1="ls -ltr\t"; 

try{ 

    java.util.Properties config = new java.util.Properties(); 
    config.put("StrictHostKeyChecking", "no"); 
    JSch jsch = new JSch(); 
    Session session=jsch.getSession(user, host, 22); 
    session.setPassword(password); 
    session.setConfig(config); 
    session.connect(); 
    System.out.println("Connected"); 

    ChannelExec channel=(ChannelExec) session.openChannel("exec"); 
    BufferedReader in=new BufferedReader(new InputStreamReader(channel.getInputStream())); 

    channel.setCommand(command); 
    channel.connect(); 
      String msg=null; 
      while((msg=in.readLine())!=null){ 
      System.out.println(msg); 
      }     
       channel.disconnect(); 
       session.disconnect(); 
       System.out.println("DONE"); 
      }catch(Exception e){ 
       e.printStackTrace(); 
      } 

     } 

}

+1

你在做什麼是SFTP連接到SFTP服務器。就像您可以使用名爲「putty」的客戶端應用程序一樣。你不用這個代碼以任何方式與膩子進行交互。 – Gimby 2014-09-26 12:45:38

+0

@Gimby - 技術上說,ssh,不是sftp,但是你是正確的,膩子是不會涉及的。 – jtahlborn 2014-09-26 12:57:50

回答

0

如果你想輸出發送到遠程會話,我建議你寫的channel.getOutputStream()返回的OutputStream。

+0

謝謝,我正試圖在我的代碼中使用它,請問你能幫我做一個這樣的示例,關於如何使用它將它寫入輸出流,並參考我的代碼? – XtremeCore 2014-09-29 04:32:28

+0

@XtremeCore - 你到目前爲止嘗試過什麼? – jtahlborn 2014-09-29 12:36:00

+0

InputStream in = channel.getInputStream(); OutputStream out = channel.getOutputStream(); channel.connect(); out.write(「ls -lrt \ n」.getBytes()); out.flush(); – XtremeCore 2014-09-29 12:38:35