Search in sources :

Example 21 with JSchException

use of com.jcraft.jsch.JSchException in project bamboobsc by billchen198318.

the class SFtpClientUtils method get.

/**
	 * 抓遠端檔案然後存到本機 , 多筆
	 * 
	 * @param user
	 * @param password
	 * @param addr
	 * @param port
	 * @param remoteFile
	 * @param localFile
	 * @throws JSchException
	 * @throws SftpException
	 * @throws Exception
	 */
public static void get(String user, String password, String addr, int port, List<String> remoteFile, List<String> localFile) throws JSchException, SftpException, Exception {
    Session session = getSession(user, password, addr, port);
    Channel channel = session.openChannel("sftp");
    channel.connect();
    ChannelSftp sftpChannel = (ChannelSftp) channel;
    try {
        for (int i = 0; i < remoteFile.size(); i++) {
            String rf = remoteFile.get(i);
            String lf = localFile.get(i);
            logger.info("get remote file: " + rf + " write to:" + lf);
            sftpChannel.get(rf, lf);
            File f = new File(lf);
            if (!f.exists()) {
                f = null;
                logger.error("get remote file:" + rf + " fail!");
                throw new Exception("get remote file:" + rf + " fail!");
            }
            f = null;
            logger.info("success write:" + lf);
        }
    } catch (Exception e) {
        e.printStackTrace();
        throw e;
    } finally {
        sftpChannel.exit();
        channel.disconnect();
        session.disconnect();
    }
}
Also used : ChannelSftp(com.jcraft.jsch.ChannelSftp) Channel(com.jcraft.jsch.Channel) File(java.io.File) SftpException(com.jcraft.jsch.SftpException) JSchException(com.jcraft.jsch.JSchException) Session(com.jcraft.jsch.Session)

Example 22 with JSchException

use of com.jcraft.jsch.JSchException in project bamboobsc by billchen198318.

the class SFtpClientUtils method rm.

public static void rm(String user, String password, String addr, int port, List<String> fileName) throws JSchException, SftpException, Exception {
    if (fileName == null || fileName.size() < 1) {
        return;
    }
    Session session = getSession(user, password, addr, port);
    Channel channel = session.openChannel("sftp");
    channel.connect();
    ChannelSftp sftpChannel = (ChannelSftp) channel;
    try {
        for (String f : fileName) {
            sftpChannel.rm(f);
            logger.warn("success remove file from " + addr + " :" + fileName);
        }
    } catch (Exception e) {
        e.printStackTrace();
        throw e;
    } finally {
        sftpChannel.exit();
        channel.disconnect();
        session.disconnect();
    }
}
Also used : ChannelSftp(com.jcraft.jsch.ChannelSftp) Channel(com.jcraft.jsch.Channel) SftpException(com.jcraft.jsch.SftpException) JSchException(com.jcraft.jsch.JSchException) Session(com.jcraft.jsch.Session)

Example 23 with JSchException

use of com.jcraft.jsch.JSchException in project cdap by caskdata.

the class SFTPConnectionPool method connect.

public ChannelSftp connect(String host, int port, String user, String password, String keyFile) throws IOException {
    // get connection from pool
    ConnectionInfo info = new ConnectionInfo(host, port, user);
    ChannelSftp channel = getFromPool(info);
    if (channel != null) {
        if (channel.isConnected()) {
            return channel;
        } else {
            channel = null;
            synchronized (this) {
                --liveConnectionCount;
                con2infoMap.remove(channel);
            }
        }
    }
    // create a new connection and add to pool
    JSch jsch = new JSch();
    Session session = null;
    try {
        if (user == null || user.length() == 0) {
            user = System.getProperty("user.name");
        }
        if (password == null) {
            password = "";
        }
        if (keyFile != null && keyFile.length() > 0) {
            jsch.addIdentity(keyFile);
        }
        if (port <= 0) {
            session = jsch.getSession(user, host);
        } else {
            session = jsch.getSession(user, host, port);
        }
        session.setPassword(password);
        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.connect();
        channel = (ChannelSftp) session.openChannel("sftp");
        channel.connect();
        synchronized (this) {
            con2infoMap.put(channel, info);
            liveConnectionCount++;
        }
        return channel;
    } catch (JSchException e) {
        throw new IOException(StringUtils.stringifyException(e));
    }
}
Also used : JSchException(com.jcraft.jsch.JSchException) ChannelSftp(com.jcraft.jsch.ChannelSftp) IOException(java.io.IOException) JSch(com.jcraft.jsch.JSch) Session(com.jcraft.jsch.Session)

Example 24 with JSchException

use of com.jcraft.jsch.JSchException in project cdap by caskdata.

the class SFTPConnectionPool method disconnect.

void disconnect(ChannelSftp channel) throws IOException {
    if (channel != null) {
        // close connection if too many active connections
        boolean closeConnection = false;
        synchronized (this) {
            if (liveConnectionCount > maxConnection) {
                --liveConnectionCount;
                con2infoMap.remove(channel);
                closeConnection = true;
            }
        }
        if (closeConnection) {
            if (channel.isConnected()) {
                try {
                    Session session = channel.getSession();
                    channel.disconnect();
                    session.disconnect();
                } catch (JSchException e) {
                    throw new IOException(StringUtils.stringifyException(e));
                }
            }
        } else {
            returnToPool(channel);
        }
    }
}
Also used : JSchException(com.jcraft.jsch.JSchException) IOException(java.io.IOException) Session(com.jcraft.jsch.Session)

Example 25 with JSchException

use of com.jcraft.jsch.JSchException in project che by eclipse.

the class JschSshClient method copyRecursively.

private void copyRecursively(String sourceFolder, String targetFolder) throws MachineException {
    // create target dir
    try {
        int execCode = execAndGetCode("mkdir -p " + targetFolder);
        if (execCode != 0) {
            throw new MachineException(format("Creation of folder %s failed. Exit code is %s", targetFolder, execCode));
        }
    } catch (JSchException | IOException e) {
        throw new MachineException(format("Creation of folder %s failed. Error: %s", targetFolder, e.getLocalizedMessage()));
    }
    // not normalized paths don't work
    final String targetAbsolutePath = getAbsolutePath(targetFolder);
    // copy files
    ChannelSftp sftp = null;
    try {
        sftp = (ChannelSftp) session.openChannel("sftp");
        sftp.connect(connectionTimeout);
        final ChannelSftp finalSftp = sftp;
        Files.walkFileTree(Paths.get(sourceFolder), new SimpleFileVisitor<Path>() {

            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                try {
                    if (!attrs.isDirectory()) {
                        copyFile(file.toString(), Paths.get(targetAbsolutePath, file.getFileName().toString()).toString(), finalSftp);
                    } else {
                        finalSftp.mkdir(file.normalize().toString());
                    }
                } catch (MachineException | SftpException e) {
                    throw new IOException(format("Sftp copying of file %s failed. Error: %s", file, e.getLocalizedMessage()));
                }
                return FileVisitResult.CONTINUE;
            }
        });
    } catch (JSchException | IOException e) {
        throw new MachineException("Copying failed. Error: " + e.getLocalizedMessage());
    } finally {
        if (sftp != null) {
            sftp.disconnect();
        }
    }
}
Also used : JSchException(com.jcraft.jsch.JSchException) Path(java.nio.file.Path) ChannelSftp(com.jcraft.jsch.ChannelSftp) MachineException(org.eclipse.che.api.machine.server.exception.MachineException) FileVisitResult(java.nio.file.FileVisitResult) IOException(java.io.IOException) BasicFileAttributes(java.nio.file.attribute.BasicFileAttributes)

Aggregations

JSchException (com.jcraft.jsch.JSchException)40 IOException (java.io.IOException)20 Session (com.jcraft.jsch.Session)19 JSch (com.jcraft.jsch.JSch)14 ChannelSftp (com.jcraft.jsch.ChannelSftp)11 Channel (com.jcraft.jsch.Channel)9 SftpException (com.jcraft.jsch.SftpException)9 ChannelExec (com.jcraft.jsch.ChannelExec)6 InputStream (java.io.InputStream)6 ArrayList (java.util.ArrayList)6 UserInfo (com.jcraft.jsch.UserInfo)5 File (java.io.File)5 MachineException (org.eclipse.che.api.machine.server.exception.MachineException)5 SSHShell (com.microsoft.azure.management.samples.SSHShell)4 Properties (java.util.Properties)4 BufferedReader (java.io.BufferedReader)3 ByteArrayInputStream (java.io.ByteArrayInputStream)3 FileInputStream (java.io.FileInputStream)3 InputStreamReader (java.io.InputStreamReader)3 OutputStream (java.io.OutputStream)3