java使用Jsch实现从linux服务端下载文件

来源:互联网 发布:java里什么是流 编辑:程序博客网 时间:2024/06/05 22:40

java利用Jsch实现从linux服务端下载文件

         直接贴代码,大家只需改下配置,且充分验证可行。
         吐槽下,网上这类文章很多,但是没几个能用的(基本都是少依赖的类文件),真是坑啊!

1. 设计一个SshConfiguration类,如下:

package com.cheers.qa;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;}}

2. 获取linux服务端文件代码如下:

package com.cheers.qa;import java.io.File;import java.util.Properties;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.JSch;import com.jcraft.jsch.JSchException;import com.jcraft.jsch.Session;import com.jcraft.jsch.SftpException;public class TranscodingAnalyzerDemo {private ChannelSftp channelSftp;      private Session session=null;      private int timeout=60000;            public TranscodingAnalyzerDemo(SshConfiguration conf) throws JSchException{          System.out.println("try connect to  "+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);//设置超时          session.connect();//通过Session建立连接             }      public void download(String src,String dst) throws JSchException, SftpException, InterruptedException{          //src linux服务器文件地址,dst 本地存放地址         //判断 如果本地dst如果存在,则先删除,然后在下载 File file = new File(dst);if(file.exists()){file.delete();Thread.sleep(1000);}        channelSftp=(ChannelSftp) session.openChannel("sftp");          channelSftp.connect();          channelSftp.get(src, dst);          System.out.println(">>>>>>>>>>  File:"+src+" has downloaded success!");        channelSftp.quit();      }      public void close(){          session.disconnect();      }  public static void main(String[] args){ SshConfiguration configuration=new SshConfiguration();          configuration.setHost("192.168.1.26");          configuration.setUsername("cheersqa");          configuration.setPassword("123456");          configuration.setPort(22);          try{          TranscodingAnalyzerDemo sshUtil=new TranscodingAnalyzerDemo(configuration);              sshUtil.download("/opt/cheerstest1/1111111111","logs1_26");              sshUtil.close();          }catch(Exception e){              e.printStackTrace();          }      }}


原创粉丝点击