实现通过java操作命令行压缩文件
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
package com.fjy.spring.untils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import ch.ethz.ssh2.Connection;
|
||||
import ch.ethz.ssh2.Session;
|
||||
import ch.ethz.ssh2.StreamGobbler;
|
||||
/**
|
||||
* @author F嘉阳
|
||||
* @date 2018-05-10 12:16
|
||||
*/
|
||||
public class RemoteExecuteCommandUtil {
|
||||
//字符编码默认是utf-8
|
||||
private static String DEFAULTCHART="UTF-8";
|
||||
private Connection conn;
|
||||
private String ip;
|
||||
private String userName;
|
||||
private String userPwd;
|
||||
|
||||
public RemoteExecuteCommandUtil(String ip, String userName, String userPwd) {
|
||||
this.ip = ip;
|
||||
this.userName = userName;
|
||||
this.userPwd = userPwd;
|
||||
}
|
||||
|
||||
|
||||
public RemoteExecuteCommandUtil() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 远程登录linux的主机
|
||||
* @author Ickes
|
||||
* @since V0.1
|
||||
* @return
|
||||
* 登录成功返回true,否则返回false
|
||||
*/
|
||||
public Boolean login(){
|
||||
boolean flg=false;
|
||||
try {
|
||||
conn = new Connection(ip);
|
||||
conn.connect();//连接
|
||||
flg=conn.authenticateWithPassword(userName, userPwd);//认证
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return flg;
|
||||
}
|
||||
/**
|
||||
* @author Ickes
|
||||
* 远程执行shll脚本或者命令
|
||||
* @param cmd
|
||||
* 即将执行的命令
|
||||
* @return
|
||||
* 命令执行完后返回的结果值
|
||||
* @since V0.1
|
||||
*/
|
||||
public String execute(String cmd){
|
||||
String result="";
|
||||
try {
|
||||
if(login()){
|
||||
Session session= conn.openSession();//打开一个会话
|
||||
session.execCommand(cmd);//执行命令
|
||||
result=processStdout(session.getStdout(),DEFAULTCHART);
|
||||
//如果为得到标准输出为空,说明脚本执行出错了
|
||||
if(StringUtils.isBlank(result)){
|
||||
result=processStdout(session.getStderr(),DEFAULTCHART);
|
||||
}
|
||||
conn.close();
|
||||
session.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @author Ickes
|
||||
* 远程执行shll脚本或者命令
|
||||
* @param cmd
|
||||
* 即将执行的命令
|
||||
* @return
|
||||
* 命令执行成功后返回的结果值,如果命令执行失败,返回空字符串,不是null
|
||||
* @since V0.1
|
||||
*/
|
||||
public String executeSuccess(String cmd){
|
||||
String result="";
|
||||
try {
|
||||
if(login()){
|
||||
Session session= conn.openSession();//打开一个会话
|
||||
session.execCommand(cmd);//执行命令
|
||||
result=processStdout(session.getStdout(),DEFAULTCHART);
|
||||
conn.close();
|
||||
session.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析脚本执行返回的结果集
|
||||
* @author Ickes
|
||||
* @param in 输入流对象
|
||||
* @param charset 编码
|
||||
* @since V0.1
|
||||
* @return
|
||||
* 以纯文本的格式返回
|
||||
*/
|
||||
private String processStdout(InputStream in, String charset){
|
||||
InputStream stdout = new StreamGobbler(in);
|
||||
StringBuffer buffer = new StringBuffer();;
|
||||
try {
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(stdout,charset));
|
||||
String line=null;
|
||||
while((line=br.readLine()) != null){
|
||||
buffer.append(line+"\n");
|
||||
}
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
public static void setCharset(String charset) {
|
||||
DEFAULTCHART = charset;
|
||||
}
|
||||
public Connection getConn() {
|
||||
return conn;
|
||||
}
|
||||
public void setConn(Connection conn) {
|
||||
this.conn = conn;
|
||||
}
|
||||
public String getIp() {
|
||||
return ip;
|
||||
}
|
||||
public void setIp(String ip) {
|
||||
this.ip = ip;
|
||||
}
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
public void setUserName(String userName) {
|
||||
this.userName = userName;
|
||||
}
|
||||
public String getUserPwd() {
|
||||
return userPwd;
|
||||
}
|
||||
public void setUserPwd(String userPwd) {
|
||||
this.userPwd = userPwd;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user