使⽤
/**
*
* 描述:连接linux服务器并执⾏相关的shell命令
* 作者:cuicx
* 版本:V1.0
* 创建⽇期:2018年7⽉4⽇
* 修改⽇期: 2018年7⽉4⽇
*/
public class ConnectLinuxCommand {
private static final Logger logger = Logger(ConnectLinuxCommand.class);
private static String DEFAULTCHARTSET = "UTF-8";
private static Connection conn;
/**
*
* @Title: login
* @Description: ⽤户名密码⽅式远程登录linux服务器
* @return: Boolean
* @throws
*/
public static Boolean login(RemoteConnect remoteConnect) {
boolean flag = false;
try {
conn = new Ip());
flag = conn.UserName(), Password());// 认证
if (flag) {
logger.info("认证成功!");
linux循环执行命令脚本} else {
logger.info("认证失败!");
conn.close();
}
} catch (IOException e) {
e.printStackTrace();
}
return flag;
}
/**
*
* @Title: loginByKey
* @Description: 秘钥⽅式远程登录linux服务器
* @param remoteConnect
* @param keyFile ⼀个⽂件对象指向⼀个⽂件,该⽂件包含OpenSSH密钥格式的⽤户的DSA或RSA私钥(PEM,不能丢失"-----BEGIN DSA PRIVATE KEY-----" or "-----BEGIN * @param keyfilePass 如果秘钥⽂件加密需要⽤该参数解密,如果没有加密可以为null
* @return Boolean
* @throws
*/
public static Boolean loginByFileKey(RemoteConnect remoteConnect, File keyFile, String keyfilePass) {
boolean flag = false;
// 输⼊密钥所在路径
// File keyfile = new File("C:\\temp\\private");
try {
conn = new Ip());
// 登录认证
flag = conn.UserName(), keyFile, keyfilePass);
if (flag) {
logger.info("认证成功!");
} else {
logger.info("认证失败!");
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
*
* @Title: loginByCharsKey
* @Description: 秘钥⽅式远程登录linux服务器
* @Description: 秘钥⽅式远程登录linux服务器
* @param remoteConnect
* @param keys ⼀个字符[],其中包含⽤户的DSA或RSA私钥(OpenSSH密匙格式,您不能丢失“----- begin DSA私钥-----”或“-----BEGIN RSA PRIVATE KEY-----“标签。char数组 * @param keyPass 如果秘钥字符数组加密需要⽤该字段解密否则不需要可以为null
* @return Boolean
* @throws
*/
public static Boolean loginByCharsKey(RemoteConnect remoteConnect, char[] keys, String keyPass) {
boolean flag = false;
// 输⼊密钥所在路径
// File keyfile = new File("C:\\temp\\private");
try {
conn = new Ip());
// 登录认证
flag = conn.UserName(), keys, keyPass);
if (flag) {
logger.info("认证成功!");
} else {
logger.info("认证失败!");
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
*
* @Title: execute
* @Description: 远程执⾏shll脚本或者命令
* @param cmd 脚本命令
* @return: result 命令执⾏完毕返回结果
* @throws
*/
public static String execute(String cmd){
String result = "";
try {
Session session = conn.openSession();// 打开⼀个会话
result = Stdout(), DEFAULTCHARTSET);
// 如果为得到标准输出为空,说明脚本执⾏出错了
if (StringUtils.isBlank(result)) {
result = Stderr(), DEFAULTCHARTSET);
}
conn.close();
session.close();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* @Title: executeSuccess
* @Description: 远程执⾏shell脚本或者命令
* @param shell脚本或者命令
* @return String 命令执⾏成功后返回的结果值,如果命令执⾏失败,返回空字符串,不是null
* @throws
*/
public static String executeSuccess(String cmd){
String result = "";
try {
Session session = conn.openSession();// 打开⼀个会话
result = Stdout(), DEFAULTCHARTSET);
conn.close();
session.close();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/
**
*
*
* @Title: processStdout
* @Description: 解析脚本执⾏的返回结果
* @param in 输⼊流对象
* @param charset 编码
* @return String 以纯⽂本的格式返回
* @throws
*/
public static 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();
}
String();
}
/**
*
* @Title: ConnectLinux
* @Description: 通过⽤户名和密码关联linux服务器
* @return
* @return String
* @throws
*/
public static boolean connectLinux(String ip,String userName,String password,String commandStr) {
logger.info("ConnectLinuxCommand scpGet===" + "ip:" + ip + " userName:" + userName + " commandStr:" + commandStr);
String returnStr = "";
boolean result = true;
RemoteConnect remoteConnect = new RemoteConnect();
remoteConnect.setIp(ip);
remoteConnect.setUserName(userName);
remoteConnect.setPassword(password);
try {
if (login(remoteConnect)) {
returnStr = execute(commandStr);
System.out.println(result);
}
} catch (Exception e) {
e.printStackTrace();
}
if (StringUtils.isBlank(returnStr)) {
result = false;
}
return result;
}
/
**
*
* @Title: scpGet
* @Description: 从其他服务器获取⽂件到本服务器指定⽬录
* @param host ip(其他服务器)
* @param username ⽤户名(其他服务器)
* @param password 密码(其他服务器)
* @param remoteFile ⽂件位置(其他服务器)
* @param localDir 本服务器⽬录
* @throws IOException
* @return void
* @throws
*/
public static void scpGet(String ip, String userName, String password, String remoteFile, String localDir)
throws IOException {
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论