Search in sources :

Example 21 with ChannelSftp

use of com.jcraft.jsch.ChannelSftp in project GNS by MobilityFirst.

the class SFTPUpload method localFileNewer.

/**
   *
   * @param user
   * @param host
   * @param keyFile
   * @param fileToTransfer
   * @param sftpWorkingDirectory
   * @return true if the local file is newer
   */
public static boolean localFileNewer(String user, String host, File keyFile, String fileToTransfer, String sftpWorkingDirectory) {
    if (verbose) {
        System.out.println("Local File Newer Check " + fileToTransfer + " to " + host + "@" + user + " " + sftpWorkingDirectory);
    }
    try {
        ChannelSftp channelSftp = authenticateSftp(user, host, keyFile);
        Path paths = Paths.get(fileToTransfer);
        String localDir = paths.getParent().toString();
        channelSftp.cd(sftpWorkingDirectory);
        channelSftp.lcd(localDir);
        SftpATTRS remoteAttributes = channelSftp.stat(paths.getFileName().toString());
        long localTime = new File(fileToTransfer).lastModified();
        long remoteTime = remoteAttributes.getMTime() * 1000L;
        if (verbose) {
            System.out.println("L: " + localDir + " R: " + sftpWorkingDirectory + "\n" + "Local time = " + localTime + " Remote time = " + remoteTime);
        }
        if (verbose) {
            System.out.println("Result " + (localTime > remoteTime));
        }
        return localTime > remoteTime;
    } catch (JSchException | SftpException e) {
        System.out.println("Exception while checking for file newer:" + e);
        return false;
    }
}
Also used : Path(java.nio.file.Path) JSchException(com.jcraft.jsch.JSchException) ChannelSftp(com.jcraft.jsch.ChannelSftp) SftpATTRS(com.jcraft.jsch.SftpATTRS) SftpException(com.jcraft.jsch.SftpException) File(java.io.File)

Example 22 with ChannelSftp

use of com.jcraft.jsch.ChannelSftp in project GNS by MobilityFirst.

the class SFTPUpload method uploadFile.

/**
   *
   * @param user
   * @param host
   * @param keyFile
   * @param fileToTransfer
   * @param sftpWorkingDirectory
   */
public static void uploadFile(String user, String host, File keyFile, String fileToTransfer, String sftpWorkingDirectory) {
    if (verbose) {
        System.out.println("Upload file from " + fileToTransfer + " to " + host + "@" + user + " " + sftpWorkingDirectory);
    }
    try {
        ChannelSftp channelSftp = authenticateSftp(user, host, keyFile);
        File f = new File(fileToTransfer);
        channelSftp.put(new FileInputStream(f), f.getName());
    } catch (JSchException | SftpException | FileNotFoundException e) {
        System.out.println("Exception while uploading file:" + e);
    }
}
Also used : JSchException(com.jcraft.jsch.JSchException) ChannelSftp(com.jcraft.jsch.ChannelSftp) SftpException(com.jcraft.jsch.SftpException) FileNotFoundException(java.io.FileNotFoundException) File(java.io.File) FileInputStream(java.io.FileInputStream)

Example 23 with ChannelSftp

use of com.jcraft.jsch.ChannelSftp in project voltdb by VoltDB.

the class ExportOnServerVerifier method checkForMoreExportFiles.

private void checkForMoreExportFiles() throws Exception {
    Comparator<String> comparator = new Comparator<String>() {

        @Override
        public int compare(String f1, String f2) {
            f1 = f1.substring(f1.lastIndexOf('/') + 1);
            f2 = f2.substring(f2.lastIndexOf('/') + 1);
            Matcher m1 = EXPORT_FILENAME_REGEXP.matcher(f1);
            Matcher m2 = EXPORT_FILENAME_REGEXP.matcher(f2);
            if (m1.matches() && !m2.matches())
                return -1;
            else if (m2.matches() && !m1.matches())
                return 1;
            long first_ts = Long.parseLong(m1.group(2));
            long second_ts = Long.parseLong(m2.group(2));
            if (first_ts != second_ts) {
                return (int) (first_ts - second_ts);
            } else {
                long first_txnid = Long.parseLong(m1.group(1));
                long second_txnid = Long.parseLong(m2.group(1));
                if (first_txnid < second_txnid) {
                    return -1;
                } else if (first_txnid > second_txnid) {
                    return 1;
                } else {
                    return 0;
                }
            }
        }
    };
    checkForMoreFilesRemote(comparator);
    for (Pair<ChannelSftp, String> p : m_exportFiles) {
        System.out.println("" + p.getFirst().getSession().getHost() + " : " + p.getSecond());
    }
}
Also used : ChannelSftp(com.jcraft.jsch.ChannelSftp) Matcher(java.util.regex.Matcher) Comparator(java.util.Comparator)

Example 24 with ChannelSftp

use of com.jcraft.jsch.ChannelSftp in project voltdb by VoltDB.

the class ExportOnServerVerifier method openNextExportFile.

Pair<BufferedReader, Runnable> openNextExportFile() throws Exception {
    if (m_exportFiles.isEmpty()) {
        checkForMoreExportFiles();
    }
    Pair<ChannelSftp, String> remotePair = m_exportFiles.poll();
    if (remotePair == null)
        return null;
    final ChannelSftp channel = remotePair.getFirst();
    final String path = remotePair.getSecond();
    System.out.println("INFO export: Opening export file: " + channel.getSession().getHost() + "@" + path);
    final BufferedReader reader = new BufferedReader(new InputStreamReader(channel.get(path)), 4096 * 32);
    Runnable r = new Runnable() {

        @Override
        public void run() {
            try {
                reader.close();
                channel.rm(path);
            } catch (Exception e) {
                Throwables.propagate(e);
            }
        }
    };
    return Pair.of(reader, r);
}
Also used : ChannelSftp(com.jcraft.jsch.ChannelSftp) InputStreamReader(java.io.InputStreamReader) BufferedReader(java.io.BufferedReader) SftpException(com.jcraft.jsch.SftpException) IOException(java.io.IOException) JSchException(com.jcraft.jsch.JSchException)

Example 25 with ChannelSftp

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

the class SFtpClientUtils method put.

/**
	 * 本地檔案放到遠端SFTP上
	 * 	
	 * @param user
	 * @param password
	 * @param addr
	 * @param port
	 * @param localFile
	 * @param remoteFile
	 * @throws JSchException
	 * @throws SftpException
	 * @throws Exception
	 */
public static void put(String user, String password, String addr, int port, List<String> localFile, List<String> remoteFile) 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 < localFile.size(); i++) {
            String rf = remoteFile.get(i);
            String lf = localFile.get(i);
            logger.info("put local file: " + lf + " write to " + addr + " :" + rf);
            sftpChannel.put(lf, rf);
            logger.info("success write to " + addr + " :" + rf);
        }
    } 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)

Aggregations

ChannelSftp (com.jcraft.jsch.ChannelSftp)31 SftpException (com.jcraft.jsch.SftpException)16 IOException (java.io.IOException)15 JSchException (com.jcraft.jsch.JSchException)12 Session (com.jcraft.jsch.Session)11 File (java.io.File)7 Channel (com.jcraft.jsch.Channel)6 JSch (com.jcraft.jsch.JSch)6 Path (org.apache.hadoop.fs.Path)6 FileNotFoundException (java.io.FileNotFoundException)3 InputStream (java.io.InputStream)3 LsEntry (com.jcraft.jsch.ChannelSftp.LsEntry)2 SftpATTRS (com.jcraft.jsch.SftpATTRS)2 FileInputStream (java.io.FileInputStream)2 OutputStream (java.io.OutputStream)2 Path (java.nio.file.Path)2 HashSet (java.util.HashSet)2 Matcher (java.util.regex.Matcher)2 Configuration (org.apache.hadoop.conf.Configuration)2 FSDataInputStream (org.apache.hadoop.fs.FSDataInputStream)2