当前位置:编程学习 > JAVA >>

java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行(改进)

我写过一篇java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行,现在想来,觉得调用方式太过于绕,不符合我写程序的风格,所以进行了改进。
参数类,用于配置连接的参数,SshConfiguration.java

[java]
/**
 * 
 */ 
package com.versou.util.jsch; 
 
/**
 * @author hadoop
 *
 */ 
public class SshConfiguration { 
     
    private String host; 
     
    private String username; 
     
    private String password; 
     
    private int port; 
 
    public String getHost() { 
        return host; 
    } 
 
    public void setHost(String host) { 
        this.host = host; 
    } 
 
    public String getUsername() { 
        return username; 
    } 
 
    public void setUsername(String username) { 
        this.username = username; 
    } 
 
    public String getPassword() { 
        return password; 
    } 
 
    public void setPassword(String password) { 
        this.password = password; 
    } 
 
    public int getPort() { 
        return port; 
    } 
 
    public void setPort(int port) { 
        this.port = port; 
    } 

/**
 *
 */
package com.versou.util.jsch;

/**
 * @author hadoop
 *
 */
public class SshConfiguration {
 
 private String host;
 
 private String username;
 
 private String password;
 
 private int port;

 public String getHost() {
  return host;
 }

 public void setHost(String host) {
  this.host = host;
 }

 public String getUsername() {
  return username;
 }

 public void setUsername(String username) {
  this.username = username;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public int getPort() {
  return port;
 }

 public void setPort(int port) {
  this.port = port;
 }
}
工具类,VersouSshUtil.java
[java]
/**
 * 
 */ 
package com.versou.util.jsch; 
 
import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.nio.charset.Charset; 
import java.util.Properties; 
 
import org.apache.log4j.Logger; 
 
import com.jcraft.jsch.ChannelExec; 
import com.jcraft.jsch.ChannelSftp; 
import com.jcraft.jsch.JSch; 
import com.jcraft.jsch.Session; 
 
/**
 * @author hadoop
 *
 */ 
public class VersouSshUtil { 
     
    private ChannelSftp channelSftp; 
     
    private ChannelExec channelExec; 
     
    private Session session = null; 
     
    private int timeout = 60000; 
     
    private static final Logger LOG = Logger.getLogger(VersouSshUtil.class); 
     
    public VersouSshUtil(SshConfiguration conf) throws Exception 
    { 
        LOG.info("尝试连接到....host:" + conf.getHost() + ",username:" + conf.getUsername() + ",password:" + conf.getPassword() + ",port:" + conf.getPort()); 
        JSch jsch = new JSch(); // 创建JSch对象  
        session = jsch.getSession(conf.getUsername(), conf.getHost(), conf.getPort()); // 根据用户名,主机ip,端口获取一个Session对象  
        session.setPassword(conf.getPassword()); // 设置密码  
        Properties config = new Properties(); 
        config.put("StrictHostKeyChecking", "no"); 
        session.setConfig(config); // 为Session对象设置properties  
        session.setTimeout(timeout); // 设置timeout时间  
        session.connect(); // 通过Session建立链接  
    } 
     
    public void download(String src, String dst) throws Exception 
    { 
        channelSftp = (ChannelSftp)session.openChannel("sftp"); 
        channelSftp.connect(); 
        channelSftp.get(src, dst, new FileProgressMonitor(), ChannelSftp.OVERWRITE); 
        channelSftp.quit(); 
    } 
     
    public void upload(String src, String dst) throws Exception 
    { 
        channelSftp = (ChannelSftp)session.openChannel("sftp"); 
        channelSftp.connect(); 
        channelSftp.put(src, dst, new FileProgressMonitor(), ChannelSftp.OVERWRITE); 
        channelSftp.quit(); 
    } 
     
    public void runCmd(String cmd, String charset) throws Exception 
    { 
        channelExec = (ChannelExec)session.openChannel("exec"); 
        channelExec.setCommand(cmd); 
        channelExec.setInputStream(null); 
        channelExec.setErrStream(System.err); 
        channelExec.connect(); 
        InputStream in = channelE

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,