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. }  
原文地址:https://www.cnblogs.com/weiyi1314/p/9517245.html