1. pom.xml
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.50</version> </dependency>
?
2.?
package xxxxx; import java.io.InputStream; import java.util.Vector; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.ChannelSftp.LsEntry; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; import com.jcraft.jsch.UserInfo; public class JschShellUtil { private final Logger LOGGER = LoggerFactory.getLogger(JschShellUtil.class); private String host; private String user; private String password; private int port; private int maxWaitTime; private String keyfile; private String passphrase; private boolean sshKey; private ChannelSftp sftp; private ChannelExec exec; private Session session; public JschShellUtil(String host, String user, String password, int port, int maxWaitTime) { this.host = host; this.user = user; this.password = password; this.port = port; this.maxWaitTime = maxWaitTime; this.keyfile = null; this.passphrase = null; this.sshKey = false; } public JschShellUtil(String host, String user, int port, int maxWaitTime, String keyfile, String passphrase) { this.host = host; this.user = user; this.password = null; this.port = port; this.maxWaitTime = maxWaitTime; this.keyfile = keyfile; this.passphrase = passphrase; this.sshKey = true; } public void open() throws JSchException { JSch client = new JSch(); if (sshKey && keyfile != null && keyfile.length() > 0) { client.addIdentity(this.keyfile, this.passphrase); } session = client.getSession(this.user, this.host, this.port); session.setUserInfo(new UserInfo() { public String getPassphrase() { return null; } public String getPassword() { return password; } public boolean promptPassphrase(String arg0) { return true; } public boolean promptPassword(String arg0) { return true; } public boolean promptYesNo(String arg0) { return true; } public void showMessage(String arg0) { } }); session.setTimeout(maxWaitTime); session.connect(); Channel channel = session.openChannel("sftp"); channel.connect(); sftp = (ChannelSftp) channel; } public void close() { if (sftp != null) { sftp.disconnect(); sftp = null; } if (session != null) { session.disconnect(); session = null; } } public void cd(String path) throws SftpException { sftp.cd(path); } public String pwd() throws SftpException { String pwd = sftp.pwd(); LOGGER.info(sftp.pwd()); return pwd; } public void ls() throws SftpException { Vector<?> vector = sftp.ls("."); for (Object object : vector) { if (object instanceof LsEntry) { LsEntry entry = LsEntry.class.cast(object); LOGGER.info(entry.getFilename()); } } } public void ls(String path) throws SftpException { Vector<?> vector = sftp.ls(path); for (Object object : vector) { if (object instanceof LsEntry) { LsEntry entry = LsEntry.class.cast(object); LOGGER.info(entry.getFilename()); } } } public void rename(String oldPath, String newPath) throws SftpException { sftp.rename(oldPath, newPath); } public void cp(String src, String dest) throws SftpException { int lastSlash = src.lastIndexOf("/"); String srcFile = src; String srcDir = "."; if (lastSlash > -1) { srcFile = src.substring(lastSlash + 1); srcDir = src.substring(0, lastSlash); } String temp = srcDir + "/temp_" + srcFile; rename(src, temp); rename(temp, dest)