Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void sftpConnection() {
- // Object Declaration.
- JSch jsch = new JSch();
- Session session = null;
- Channel channel = null;
- // Variable Declaration.
- String user = "foo";
- String host = "10.9.8.7";
- Integer port = 22;
- String password = "test123";
- String watchFolder = "\localhosttextfiles";
- String outputDir = "/remote/textFolder/";
- String filemask = "*.txt";
- try {
- session = jsch.getSession(user, host, port);
- /*
- * StrictHostKeyChecking Indicates what to do if the server's host
- * key changed or the server is unknown. One of yes (refuse connection),
- * ask (ask the user whether to add/change the key) and no
- * (always insert the new key).
- */
- session.setConfig("StrictHostKeyChecking", "no");
- session.setPassword(password);
- session.connect();
- channel = session.openChannel("sftp");
- channel.connect();
- ChannelSftp sftpChannel = (ChannelSftp)channel;
- // Go through watch folder looking for files.
- File[] files = findFile(watchFolder, filemask);
- for(File file : files) {
- // Upload file.
- putFile(file, sftpChannel, outputDir);
- }
- } finally {
- sftpChannel.exit();
- session.disconnect();
- }
- }
- public static void putFile(File file, ChannelSftp sftpChannel, String outputDir) {
- FileInputStream fis = null;
- try {
- // Change to output directory.
- sftpChannel.cd(outputDir);
- // Upload file.
- fis = new FileInputStream(file);
- sftpChannel.put(fis, file.getName());
- fis.close();
- } catch{}
- }
- public static File[] findFile(String dirName, final String mask) {
- File dir = new File(dirName);
- return dir.listFiles(new FilenameFilter() {
- public boolean accept(File dir, String filename)
- { return filename.endsWith(mask); }
- } );
- }
- private static final String USER_PROMPT = "Enter username@hostname:port";
- private static final boolean USE_GUI = true;
- public static void main(final String[] arg) {
- Session session = null;
- ChannelSftp channelSftp = null;
- try {
- final JSch jsch = new JSch();
- final String defaultInput = System.getProperty("user.name") + "@localhost:22";
- String input = (USE_GUI) ? JOptionPane.showInputDialog(USER_PROMPT, defaultInput) : System.console().readLine("%s (%s): ", USER_PROMPT, defaultInput);
- if (input == null || input.trim().length() == 0) {
- input = defaultInput;
- }
- final int indexOfAt = input.indexOf('@');
- final int indexOfColon = input.indexOf(':');
- final String user = input.substring(0, indexOfAt);
- final String host = input.substring(indexOfAt + 1, indexOfColon);
- final int port = Integer.parseInt(input.substring(indexOfColon + 1));
- jsch.setKnownHosts("/path/to/known_hosts");
- // if you have set up authorized_keys on the server, using that identitiy
- // with the code on the next line allows for password-free, trusted connections
- // jsch.addIdentity("/path/to/id_rsa", "id_rsa_password");
- session = jsch.getSession(user, host, 22);
- final UserInfo ui = new MyUserInfo();
- session.setUserInfo(ui);
- session.connect();
- channelSftp = (ChannelSftp) session.openChannel("sftp");
- channelSftp.connect();
- channelSftp.get("/remotepath/remotefile.txt", "/localpath/localfile.txt");
- } finally {
- if (channelSftp != null) {
- channelSftp.exit();
- }
- if (session != null) {
- session.disconnect();
- }
- }
- }
- public static class MyUserInfo implements UserInfo {
- private String password;
- @Override
- public String getPassword() {
- return password;
- }
- @Override
- public boolean promptYesNo(final String str) {
- final Object[] options = {"yes", "no"};
- final boolean yesNo = (USE_GUI) ? JOptionPane.showOptionDialog(null, str, "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]) == 0 : System.console().readLine("Enter y or n: ").equals("y");
- return yesNo;
- }
- @Override
- public String getPassphrase() {
- return null;
- }
- @Override
- public boolean promptPassphrase(final String message) {
- return true;
- }
- @Override
- public boolean promptPassword(final String message) {
- if (!USE_GUI) {
- password = new String(System.console().readPassword("Password: "));
- return true;
- } else {
- final JTextField passwordField = new JPasswordField(20);
- final Object[] ob = {passwordField};
- final int result = JOptionPane.showConfirmDialog(null, ob, message, JOptionPane.OK_CANCEL_OPTION);
- if (result == JOptionPane.OK_OPTION) {
- password = passwordField.getText();
- return true;
- } else {
- return false;
- }
- }
- }
- @Override
- public void showMessage(final String message) {
- if (!USE_GUI) {
- System.console().printf(message);
- } else {
- JOptionPane.showMessageDialog(null, message);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement