java通過ssh2遠程連接計算機並執行linux命令的方法(轉)


java通過ch.ethz.ssh2遠程連接計算機並執行linux命令的方法實現

API詳情:  http://www.ganymed.ethz.ch/ssh2/javadoc/ch/ethz/ssh2/package-summary.html

jar包:  ganymed-ssh2-build210.jar    下載地址: http://www.ganymed.ethz.ch/ssh2/

代碼實現:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
  * To change this license header, choose License Headers in Project Properties.
  * To change this template file, choose Tools | Templates
  * and open the template in the editor.
  */
package  test;
 
import  java.io.IOException;
 
import  ch.ethz.ssh2.Connection;
import  ch.ethz.ssh2.Session;
import  ch.ethz.ssh2.StreamGobbler;
import  java.io.BufferedReader;
import  java.io.InputStream;
import  java.io.InputStreamReader;
 
/*
   @author: Liu Yuanyuan
   purpose: test connecting remote computer and execute linux command
*/
 
public  class  TestRemoteConnect {
 
     public  static  void  main(String[] args) {
 
         String hostname =  "192.168.100.50" ;
         String username =  "root" ;
         String password =  "highgo" ;
         //指明連接主機的IP地址  
         Connection conn =  new  Connection(hostname);
         Session ssh =  null ;
         try  {
             //連接到主機  
             conn.connect();
             //使用用戶名和密碼校驗  
             boolean  isconn = conn.authenticateWithPassword(username, password);
             if  (!isconn) 
             {
                 System.out.println( "用戶名稱或者是密碼不正確" );
            
             else 
             {
                 System.out.println( "已經連接OK" );
                 ssh = conn.openSession(); 
                 
                 ssh.execCommand( "sh /root/hello.sh" );
                 //ssh.execCommand("perl /root/hello.pl");  
                 //只允許使用一行命令,即ssh對象只能使用一次execCommand這個方法,
                 //多次使用則會出現異常       
                 //使用多個命令用分號隔開  
                 //ssh.execCommand("cd /root; sh hello.sh"); 
                 
                 //將Terminal屏幕上的文字全部打印出來                  
                 InputStream is =  new  StreamGobbler(ssh.getStdout());
                 BufferedReader brs =  new  BufferedReader( new  InputStreamReader(is));
                 while  ( true
                 {
                     String line = brs.readLine();
                     if  (line ==  null
                     {
                         break ;
                     }
                     System.out.println(line);
                 }
             }            
 
         catch  (IOException e) 
         {
             e.printStackTrace();
         finally 
         {
             //連接的Session和Connection對象都需要關閉  
             ssh.close();
             conn.close();
         }
 
     }
 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM