Java中com.jcraft.jsch.ChannelSftp講解


http://blog.csdn.net/allen_zhao_2012/article/details/7941631

http://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html

http://xpenxpen.iteye.com/blog/2061869

http://blog.csdn.net/fyqcdbdx/article/details/23863793

http://blog.csdn.net/u013256816/article/details/52701563?utm_source=gold_browser_extension

SFTP是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。SFTP 為 SSH的一部份,是一種傳輸文件到服務器的安全方式。SFTP是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。

 

ChannelSftp類是JSch實現SFTP核心類,它包含了所有SFTP的方法,如:
put():      文件上傳
get():      文件下載
cd():       進入指定目錄
ls():       得到指定目錄下的文件列表
rename():   重命名指定文件或目錄
rm():       刪除指定文件
mkdir():    創建目錄
rmdir():    刪除目錄
等等(這里省略了方法的參數,put和get都有多個重載方法,具體請看源代碼,這里不一一列出。)

 

一個簡單的jsch鏈接Linux並執行命令的utils。

 

  1. import java.io.BufferedReader;  
  2. import java.io.IOException;  
  3. import java.io.InputStream;  
  4. import java.io.InputStreamReader;  
  5.   
  6. import com.jcraft.jsch.Channel;  
  7. import com.jcraft.jsch.ChannelExec;  
  8. import com.jcraft.jsch.JSch;  
  9. import com.jcraft.jsch.JSchException;  
  10. import com.jcraft.jsch.Session;  
  11.   
  12.   
  13.   
  14. public class ShellUtils {  
  15.     private static JSch jsch;  
  16.     private static Session session;  
  17.   
  18.       
  19.     /** 
  20.      * 連接到指定的IP 
  21.      *  
  22.      * @throws JSchException 
  23.      */  
  24.     public static void connect(String user, String passwd, String host) throws JSchException {  
  25.         jsch = new JSch();  
  26.         session = jsch.getSession(user, host, 22);  
  27.         session.setPassword(passwd);  
  28.           
  29.         java.util.Properties config = new java.util.Properties();  
  30.         config.put("StrictHostKeyChecking", "no");  
  31.         session.setConfig(config);  
  32.           
  33.         session.connect();  
  34.     }  
  35.   
  36.     /** 
  37.      * 執行相關的命令 
  38.      * @throws JSchException  
  39.      */  
  40.     public static void execCmd(String command, String user, String passwd, String host) throws JSchException {  
  41.         connect(user, passwd, host);  
  42.           
  43.         BufferedReader reader = null;  
  44.         Channel channel = null;  
  45.   
  46.         try {  
  47.             while (command != null) {  
  48.                 channel = session.openChannel("exec");  
  49.                 ((ChannelExec) channel).setCommand(command);  
  50.                   
  51.                 channel.setInputStream(null);  
  52.                 ((ChannelExec) channel).setErrStream(System.err);  
  53.   
  54.                 channel.connect();  
  55.                 InputStream in = channel.getInputStream();  
  56.                 reader = new BufferedReader(new InputStreamReader(in));  
  57.                 String buf = null;  
  58.                 while ((buf = reader.readLine()) != null) {  
  59.                     System.out.println(buf);  
  60.                 }  
  61.             }  
  62.         } catch (IOException e) {  
  63.             e.printStackTrace();  
  64.         } catch (JSchException e) {  
  65.             e.printStackTrace();  
  66.         } finally {  
  67.             try {  
  68.                 reader.close();  
  69.             } catch (IOException e) {  
  70.                 e.printStackTrace();  
  71.             }  
  72.             channel.disconnect();  
  73.             session.disconnect();  
  74.         }  
  75.     }  
  76.      
  77. }  


免責聲明!

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



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