- maven
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>build210</version>
</dependency>
- ftp连接并上传文件
package com.siwei.os.app.utils;
import ch.ethz.ssh2.Connection;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.siwei.os.app.pojo.po.TerminalUploadConfig;
import org.apache.commons.net.ftp.FTPClient;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class FileUploadUtil {
public static void uploadFile(String filename, InputStream input, String terminalNo) {
FTPClient ftp = new FTPClient();
Session sshSession = null;
Channel channel = null;
ChannelSftp sftp = null;
Connection login = null;
String host = TerminalUploadConfig.getHost();
String userName = TerminalUploadConfig.getUserName();
String password = TerminalUploadConfig.getPassword();
String path = TerminalUploadConfig.getPath();
try {
JSch jsch = new JSch();
sshSession = jsch.getSession(userName, host, 22);
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
ftp.enterLocalPassiveMode();
sftp.cd(path);
sftp.put(input, filename);
input.close();
login = ServerUtil.login(host, userName, password);
String delOld = "rm -r" + path + terminalNo;
ServerUtil.execCommand(login, delOld);
String unzip = "unzip " + path + filename + " -d " + path + terminalNo;
ServerUtil.execCommand(login, unzip);
String delZip = "rm -rf " + path + filename;
ServerUtil.execCommand(login, delZip);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sftp.isClosed()) {
sftp.disconnect();
}
if (channel.isClosed()) {
channel.disconnect();
}
if (sshSession.isConnected()) {
sshSession.disconnect();
}
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
login.close();
}
}
public static void deleteFile(String fileName) {
String host = TerminalUploadConfig.getHost();
String userName = TerminalUploadConfig.getUserName();
String password = TerminalUploadConfig.getPassword();
String path = TerminalUploadConfig.getPath();
Connection login = ServerUtil.login(host, userName, password);
String del = "rm -r " + path + fileName;
ServerUtil.execCommand(login, del);
login.close();
}
}
- ssh登录并操作远程数据库
package com.siwei.os.app.utils;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import lombok.extern.slf4j.Slf4j;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
@Slf4j
public class ServerUtil {
public static Connection login(String ip, String username, String password) {
boolean flag = false;
Connection connection = null;
try {
connection = new Connection(ip);
connection.connect();
flag = connection.authenticateWithPassword(username, password);
if (flag) {
log.info("================" + ip + " 登录成功==================");
return connection;
}
} catch (Exception e) {
if (connection != null) {
connection.close();
}
connection = null;
}
return connection;
}
public static String execCommand(Connection connection, String cmd) {
String result = "";
try {
if (connection != null) {
Session session = connection.openSession();
session.execCommand(cmd);
result = processStdout(session.getStdout());
log.info("================" + "操作命令:" + cmd);
System.out.println(result);
session.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
private static String processStdout(InputStream in) {
InputStream stdout = new StreamGobbler(in);
StringBuffer buffer = new StringBuffer();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(stdout, StandardCharsets.UTF_8));
String line = null;
while ((line = br.readLine()) != null) {
buffer.append(line).append("\n");
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return buffer.toString();
}
}