Java实现远程连接Linux并执行命令
2018-02-09 10:37
691 查看
需要的jar包
连接及执行命令代码
<dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>${ganymed-ssh2}</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons-io}</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>${commons-lang}</version> <type>jar</type> <scope>compile</scope> </dependency>
连接及执行命令代码
package com.kpatch.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import ch.ethz.ssh2.StreamGobbler; public class RemoteCommandUtil { private static final Logger log = LoggerFactory.getLogger(RemoteCommandUtil.class); private static String DEFAULTCHART="UTF-8"; /** * 登录主机 * @return * 登录成功返回true,否则返回false */ public static Connection login(String ip, String userName, String userPwd){ boolean flg=false; Connection conn = null; try { conn = new Connection(ip); conn.connect();//连接 flg=conn.authenticateWithPassword(userName, userPwd);//认证 if(flg){ log.info("=========登录成功========="+conn); return conn; } } catch (IOException e) { log.error("=========登录失败========="+e.getMessage()); e.printStackTrace(); } return conn; } /** * 远程执行shll脚本或者命令 * @param cmd * 即将执行的命令 * @return * 命令执行完后返回的结果值 */ public static String execute(Connection conn,String cmd){ String result=""; try { if(conn !=null){ Session session= conn.openSession();//打开一个会话 session.execCommand(cmd);//执行命令 result=processStdout(session.getStdout(),DEFAULTCHART); //如果为得到标准输出为空,说明脚本执行出错了 if(StringUtils.isBlank(result)){ log. bd3b info("得到标准输出为空,链接conn:"+conn+",执行的命令:"+cmd); result=processStdout(session.getStderr(),DEFAULTCHART); }else{ log.info("执行命令成功,链接conn:"+conn+",执行的命令:"+cmd); } conn.close(); session.close(); } } catch (IOException e) { log.info("执行命令失败,链接conn:"+conn+",执行的命令:"+cmd+" "+e.getMessage()); e.printStackTrace(); } return result; } /** * 解析脚本执行返回的结果集 * @param in 输入流对象 * @param charset 编码 * @return * 以纯文本的格式返回 */ private 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) { log.error("解析脚本出错:"+e.getMessage()); e.printStackTrace(); } catch (IOException e) { log.error("解析脚本出错:"+e.getMessage()); e.printStackTrace(); } return buffer.toString(); } }
相关文章推荐
- JAVA实现远程SSH连接linux并执行命令
- Java远程连接Linux系统并执行Linux命令
- windows 下 java程序jsch连接远程linux服务器执行shell命令
- 利用java实现可远程执行linux命令的小工具
- java通过ssh2远程连接计算机并执行linux命令的方法(转)
- 利用java实现可远程执行linux命令的小工具
- Java实现ssh连接linux并执行shell命令
- Ganymed SSH-2 java执行远程linux机器命令工具
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- Java实现远程联接服务器执行shell命令
- java中利用jsch执行远程命令,实现sftp
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- linux 下远程执行命令 socket实现
- linux下远程服务器批量执行命令及SFTP上传文件 -- python实现
- 纯JAVA实现远程执行SSH2主机的SHELL命令
- java远程执行linux命令
- java使用telnet连接远程计算机执行命令
- java 使用jsch 远程链接linux执行命令
- Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息