java执行linux shell命令
来源:互联网 发布:设计数据库的软件dbms 编辑:程序博客网 时间:2024/05/17 09:12
package com.pasier.xxx.util;import java.io.IOException;import java.io.InputStream;import java.nio.charset.Charset;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import ch.ethz.ssh2.ChannelCondition;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.Session;import ch.ethz.ssh2.StreamGobbler;public class RmtShellExecutor { private static final Logger LOG = LoggerFactory.getLogger(RmtShellExecutor.class); private Connection conn; private String ip; private String usr; private String psword; private String charset = Charset.defaultCharset().toString(); private static final int TIME_OUT = 1000 * 5 * 60; public RmtShellExecutor(String ip, String usr, String ps) { this.ip = ip; this.usr = usr; this.psword = ps; } private boolean login() throws IOException { conn = new Connection(ip); conn.connect(); return conn.authenticateWithPassword(usr, psword); } public String exec(String cmds) throws IOException { InputStream stdOut = null; InputStream stdErr = null; String outStr = ""; String outErr = ""; int ret = -1; try { if (login()) { Session session = conn.openSession(); session.execCommand(cmds); stdOut = new StreamGobbler(session.getStdout()); outStr = processStream(stdOut, charset); LOG.info("caijl:[INFO] outStr=" + outStr); stdErr = new StreamGobbler(session.getStderr()); outErr = processStream(stdErr, charset); LOG.info("caijl:[INFO] outErr=" + outErr); session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT); ret = session.getExitStatus(); } else { LOG.error("caijl:[INFO] ssh2 login failure:" + ip); throw new IOException("SSH2_ERR"); } } finally { if (conn != null) { conn.close(); } if (stdOut != null) stdOut.close(); if (stdErr != null) stdErr.close(); } return outStr; } private String processStream(InputStream in, String charset) throws IOException { byte[] buf = new byte[1024]; StringBuilder sb = new StringBuilder(); while (in.read(buf) != -1) { sb.append(new String(buf, charset)); } return sb.toString(); } public static void main(String[] args) { String usr = "root"; String password = "12345"; String serverIP = "11.22.33.xx"; String shPath = "/root/ab.sh"; RmtShellExecutor exe = new RmtShellExecutor(serverIP, usr, password); String outInf; try { outInf = exe.exec("sh " + shPath + " xn"); System.out.println("outInf= " + outInf); } catch (IOException e) { e.printStackTrace(); } }}
阅读全文
0 0
- java执行linux shell命令
- linux 使用 java 程序执行 shell命令
- linux 下 java 执行 shell 命令
- Java调用linux系统shell执行命令
- shell执行linux命令
- java执行shell命令
- JAVA执行Shell命令
- java执行Linux shell命令或者Window cmd命令
- [linux] 不能执行shell命令
- linux 开机执行shell命令
- linux shell 远程执行命令
- Linux开机执行shell命令
- php 执行linux shell命令
- linux下执行shell 命令
- Linux shell 远程执行命令
- java 执行linux命令或shell脚本方法
- linux的shell命令检测某个java程序是否执行
- java执行linux shell命令,并拿到返回值
- sql语句查询到整个数据库的容量
- tcmalloc安装与使用
- 响应式编程
- 京东面试总结
- vuex 2.0学习心得(上)
- java执行linux shell命令
- jQuery获取radio checkbox选中值
- Java子类与父类的继承
- ionic2 使用tabs+slides实现滑动切换页面效果
- margin负边距的使用
- SpringBoot开发入门(二)在Tomcat中启动
- 剑指offer 面试题4:二维数组中的查找
- python 不同时区之间的差值与转换
- 第三个Java程序,输出计算机支持的最大整数值。