首页>代码>Java连接Linux服务器并上传文件、下载文件、发送指令>/new_maven/src/main/java/com/hai/util/sftpConnectionUtil.java
package com.hai.util;

import com.jcraft.jsch.*;
import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Properties;

public class sftpConnectionUtil {

    //连接服务器
    public static Session connect(String host, int port, String username, String password){
        Session sshSession = null;
        try {
            JSch jsch = new JSch();
            jsch.getSession(username, host, port);
            sshSession = jsch.getSession(username, host, port);
            sshSession.setPassword(password);

            Properties sshConfig = new Properties();
            sshConfig.put("StrictHostKeyChecking", "no");
            sshSession.setConfig(sshConfig);
            sshSession.connect();
        }catch (Exception e){
            e.printStackTrace();
        }
        return sshSession;

    }

    //连接sftp服务器
    public static ChannelSftp sftpConnect(Session sshSession){

        ChannelSftp sftp = null;
        try {
            Channel channel = sshSession.openChannel("sftp");
            channel.connect();
            sftp = (ChannelSftp) channel;

        }catch (Exception e){
            e.printStackTrace();
        }
        return sftp;

    }

    //连接exec服务器
    public static ChannelExec execConnect(Session sshSession){

        ChannelExec channelExec = null;
        try {
            channelExec = (ChannelExec) sshSession.openChannel("exec");

        }catch (Exception e){
            e.printStackTrace();
        }

        return channelExec;

    }

    /**
     * 上传文件
     *
     * @param directory 上传的目录
     * @param uploadFile 要上传的文件
     * @param sftp
     */
    public static void upload(String directory, String uploadFile, ChannelSftp sftp){
        try {
            sftp.cd(directory);
            File file = new File(uploadFile);
            sftp.put(new FileInputStream(file), file.getName());
            System.out.println("上传成功");

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * 下载文件
     *
     * @param directory 下载目录
     * @param downloadFile 下载的文件
     * @param saveFile 存在本地的路径
     * @param sftp
     */
    public static void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp){
        try {
            sftp.cd(directory);
            File file = new File(saveFile);
            sftp.get(downloadFile, new FileOutputStream(file));
            System.out.println("下载成功");

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * 执行命令
     *
     * @param command 命令行
     * @param channelExec
     */
    public static void execCmd(String command,ChannelExec channelExec){
        try {
            InputStream in = channelExec.getInputStream();
            channelExec.setCommand(command);
            channelExec.setErrStream(System.err);
            channelExec.connect();
            String out = IOUtils.toString(in, "UTF-8");
            in.close();

            System.out.println(out);
//            return out;

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //关闭资源
    public static void closeResource(Session sshSession,ChannelSftp sftp){

        if(sshSession != null){
            sshSession.disconnect();
        }
        if(sftp != null){
            sftp.disconnect();
        }
    }

    public static void closeResource(Session sshSession,ChannelExec channelExec){

        if(sshSession != null){
            sshSession.disconnect();
        }
        if(channelExec != null){
            channelExec.disconnect();
        }
    }


}
最近下载更多
zw050256  LV7 9月30日
wuyu8995861  LV7 8月8日
liuyu-zui  LV4 8月1日
CrystalQ  LV8 7月9日
Rommel  LV25 7月7日
最代码官方  LV163 7月3日
最近浏览更多
时光时光时光  LV1 9月30日
zw050256  LV7 9月30日
东北人  LV12 9月21日
码出奇迹  LV12 9月20日
lwp011  LV27 9月19日
1576765285  LV1 9月13日
lsq54365  LV13 9月8日
1803466516  LV3 9月4日
tangjun  LV17 8月31日
17608417105  LV8 8月29日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友