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();
}
}
}

本文提供了一段Java代码示例,详细展示了如何使用Jsch库从Linux服务器下载文件。作者强调了网上的相关教程往往不完整,导致难以应用,此示例已充分验证并可直接使用。

1298

被折叠的 条评论
为什么被折叠?



