zoukankan      html  css  js  c++  java
  • 实战:第十篇:使用Java代码获取Linux系统执行命令后的结果

    需求一:使用Java代码获取Linux系统执行命令后的结果

    需求二:获取xml节点数据

    解答:

    
    import java.io.*;
    import java.lang.management.ManagementFactory;
    import java.lang.management.MemoryMXBean;
    import java.util.*;
    import java.util.concurrent.CountDownLatch;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import com.jcraft.jsch.ChannelExec;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.JSchException;
    import com.jcraft.jsch.Session;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.dom4j.tree.DefaultAttribute;
    import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
    import org.springframework.util.CollectionUtils;
    import org.springframework.util.StringUtils;
    import xsf.data.*;
    
    /**
     * SSH工具类
     * @author
     * 2013-4-7
     */
    public class TestGetData {
    
    
        public static void main(String args[]){
    
    
        }
    
    ////    public static Map getXml(String url){
    ////        Map<String, String> hashMap = new HashMap<>();
    ////        //创建解析器
    ////        SAXReader saxreader = new SAXReader();
    ////        //读取文档
    ////        Document doc = null;
    ////        try {
    ////            doc = saxreader.read(new File(url));
    ////        } catch (DocumentException e) {
    ////            e.printStackTrace();
    ////        }
    ////        //获取根
    ////        Element root = doc.getRootElement();
    ////        //获取子节点
    ////        List<Element> list = root.elements();
    ////        for (Element element : list) {
    ////            String name = element.getName();
    ////            if("System".equals(name)){
    ////                Element dbConnection = element.element("DataBase").element("DBConnection");
    ////                String removeAbandoned = dbConnection.attributeValue("removeAbandoned");
    ////                hashMap.put("removeAbandoned",removeAbandoned != "" && removeAbandoned != null ? removeAbandoned : "");
    ////                String removeAbandonedTimeout = dbConnection.attributeValue("removeAbandonedTimeout");
    ////                hashMap.put("removeAbandonedTimeout",removeAbandonedTimeout != "" && removeAbandonedTimeout != null ? removeAbandonedTimeout : "");
    ////                String logAbandoned = dbConnection.attributeValue("logAbandoned");
    ////                hashMap.put("logAbandoned",logAbandoned != "" && logAbandoned != null ? logAbandoned : "");
    ////            }
    ////            if("Service".equals(name)){
    ////                Element connector = element.element("Connector");
    ////                hashMap.put("port",connector.attributeValue("port"));
    ////                hashMap.put("protocol",connector.attributeValue("protocol"));
    ////                hashMap.put("maxThreads",connector.attributeValue("maxThreads"));
    ////                hashMap.put("connectionTimeout",connector.attributeValue("connectionTimeout"));
    ////            }
    ////            if("ConnectionSettings".equals(name)){
    ////                List<Element> settings = element.elements("Settings");
    ////                for (Element setting : settings) {
    ////                    String attributeValue = setting.attributeValue("Id");
    ////                    if("XUGUConnection".equals(attributeValue)){
    ////                        List<Element> elements = setting.elements("Add");
    ////                        for (Element attr : elements) {
    ////                            List<Object> attributes = attr.attributes();
    ////                            DefaultAttribute value = (DefaultAttribute) attributes.get(0);
    ////                            String valueValue = value.getValue();
    ////                            DefaultAttribute data = (DefaultAttribute) attributes.get(1);
    ////                            String dataValue = data.getValue();
    ////                            if("removeAbandoned".equals(valueValue)){
    ////                                hashMap.put("removeAbandoned",dataValue);
    ////                            }
    ////                            if("removeAbandonedTimeout".equals(valueValue)){
    ////                                hashMap.put("removeAbandonedTimeout",dataValue);
    ////                            }
    ////                            if("logAbandoned".equals(valueValue)){
    ////                                hashMap.put("logAbandoned",dataValue);
    ////                            }
    ////                        }
    ////                    }
    ////                }
    ////            }
    ////
    ////        }
    ////        return hashMap;
    ////    }
    //
    //
    //    static ThreadPoolTaskExecutor threadPoolTaskExecutor;
    //
    //    static {
    //        threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
    //        threadPoolTaskExecutor.setCorePoolSize(5);
    //        threadPoolTaskExecutor.setMaxPoolSize(10);
    //        threadPoolTaskExecutor.setQueueCapacity(100);
    //        threadPoolTaskExecutor.initialize();
    //    }
    //
    //    /**
    //     * 获取数据
    //     */
    //    public static List<Map> getData(){
    //        List<Map> list = new ArrayList<>();
    //        if(!"Linux".equals(OSinfo.getOSname())){
    //            final CountDownLatch latch = new CountDownLatch(5);
    //            threadPoolTaskExecutor.submit(new Runnable() {
    //                @Override
    //                public void run() {
    //                    TestGetData.getJVM();
    //                    latch.countDown();
    //                }
    //            });
    //            threadPoolTaskExecutor.submit(new Runnable() {
    //                @Override
    //                public void run() {
    //                    Map linux = TestGetData.getOpenFiles("192.168.134.100", "root", "root", 22, "ulimit -a");
    //                    list.add(linux);
    //                    latch.countDown();
    //                }
    //            });
    //            threadPoolTaskExecutor.submit(new Runnable() {
    //                @Override
    //                public void run() {
    //                    Map mysql = TestGetData.getMysql("192.168.134.100", "root", "root", 22, "cat /etc/my.cnf");
    //                    list.add(mysql);
    //                    latch.countDown();
    //                }
    //            });
    //            threadPoolTaskExecutor.submit(new Runnable() {
    //                @Override
    //                public void run() {
    //                    Map redis = TestGetData.getRedis("192.168.134.100", "root", "root", 22, "cat redis.conf", "/usr/local/redis/bin/redis-cli info clients");
    //                    list.add(redis);
    //                    latch.countDown();
    //                }
    //            });
    //            threadPoolTaskExecutor.submit(new Runnable() {
    //                @Override
    //                public void run() {
    ////                    Map tomcat = TestGetData.getXml("G:\Tomcat\PersonalTomcat\OrdinaryTomcat\apache-tomcat-9.0.27\conf\server.xml");
    ////                    list.add(tomcat);
    //                    latch.countDown();
    //                }
    //            });
    //        }
    //        return list;
    //    }
    //
    //
    //
    //    /**
    //     * 远程 执行命令并返回结果调用过程 是同步的(执行完23才会返回)
    //     * @param host	主机名
    //     * @param user	用户名
    //     * @param psw	密码
    //     * @param port	端口
    //     * @param command	命令
    //     * @return
    //     */
    //    public static Map exec(String host,String user,String psw,int port,String command){
    //        String result="";
    //        Session session =null;
    //        ChannelExec openChannel =null;
    //        Map<String, String> map = new HashMap<>();
    //        try {
    //            JSch jsch=new JSch();
    //            session = jsch.getSession(user, host, port);
    //            java.util.Properties config = new java.util.Properties();
    //            config.put("StrictHostKeyChecking", "no");
    //            session.setConfig(config);
    //            session.setPassword(psw);
    //            session.connect();
    //            openChannel = (ChannelExec) session.openChannel("exec");
    //            openChannel.setCommand(command);
    //            openChannel.connect();
    //            InputStream in = openChannel.getInputStream();
    //            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    //            String buf = null;
    //            while ((buf = reader.readLine()) != null) {
    //                String data = new String(buf.getBytes("UTF-8"),"UTF-8");
    //                result+= data +"
    ";
    //                if(buf.contains("open files")){
    //                    map.put("openFiles",data);
    //                }
    //                if(buf.contains("soft nofile")){
    //                    map.put("softNofile",data);
    //                }
    //                if(buf.contains("hard nofile")){
    //                    map.put("hardNofile",data);
    //                }
    //                if(buf.contains("max_connections")){
    //                    map.put("maxConnections",data);
    //                }
    //                if(buf.contains("innodb_buffer_pool_size")){
    //                    map.put("innodbBufferPoolSize",data);
    //                }
    //                if(buf.contains("timeout")){
    //                    map.put("timeout",data);
    //                }
    //                if(buf.contains("connected_clients")){
    //                    map.put("connectedClients",data);
    //                }
    //            }
    //        } catch (JSchException | IOException e) {
    //            result+=e.getMessage();
    //        }finally{
    //            if(openChannel!=null&&!openChannel.isClosed()){
    //                openChannel.disconnect();
    //            }
    //            if(session!=null&&session.isConnected()){
    //                session.disconnect();
    //            }
    //        }
    //        map.put("all",result);
    //        return map;
    //    }
    //
    //    public static void getJVM(){
    //        MemoryMXBean memorymbean = ManagementFactory.getMemoryMXBean();
    //        System.out.println("堆内存信息: " + memorymbean.getHeapMemoryUsage());
    //        System.out.println("方法区内存信息: " + memorymbean.getNonHeapMemoryUsage());
    //
    //        List<String> inputArgs = ManagementFactory.getRuntimeMXBean().getInputArguments();
    //        System.out.println("
    #####################运行时设置的JVM参数#######################");
    //        System.out.println(inputArgs);
    //
    //        System.out.println("
    #####################运行时内存情况#######################");
    //        long totle = Runtime.getRuntime().totalMemory();
    //        System.out.println("总的内存量 [" + totle + "]");
    //        long free = Runtime.getRuntime().freeMemory();
    //        System.out.println("空闲的内存量 [" + free + "]");
    //        long max = Runtime.getRuntime().maxMemory();
    //        System.out.println("最大的内存量 [" + max + "]");
    //    }
    //
    //
    //
    //    public static Map getRedis(String host,String user,String psw,int port,String conf,String info){
    //        Map map = exec(host, user, psw, port, conf);//"cat redis.conf"
    //        Map<String, String> hashMap = new HashMap<>();
    //        if(!CollectionUtils.isEmpty(map)){
    //            String timeoutStr = (String) map.get("timeout");
    //            if(!StringUtils.isEmpty(timeoutStr)){
    //                hashMap.put("timeout ",timeoutStr);
    //            }else {
    //                hashMap.put("timeout ","0");
    //            }
    //        }
    //        Map clients = exec(host, user, psw, port, info);//"/usr/local/redis/bin/redis-cli info clients"
    //        String connectedClients  = getInt(((String)clients.get("connectedClients")));
    //        hashMap.put("connectedClients",connectedClients);
    //        return hashMap;
    //    }
    //
    //    /**
    //     * 获取mysql参数
    //     * @return
    //     */
    //    public static Map getMysql(String host,String user,String psw,int port,String command){
    //        Map map = exec(host, user, psw, port, command);//"cat /etc/my.cnf"
    //        Map<String, String> hashMap = new HashMap<>();
    //        if(!CollectionUtils.isEmpty(map)){
    //            String maxConnections = getInt(((String)map.get("maxConnections")));
    //            if(StringUtils.isEmpty(maxConnections)){
    //                maxConnections = "0";
    //                hashMap.put("maxConnections",maxConnections);
    //            }
    //            String innodbBufferPoolSize = getInt((String)map.get("innodbBufferPoolSize"));
    //            if(StringUtils.isEmpty(innodbBufferPoolSize)){
    //                innodbBufferPoolSize = "0";
    //                hashMap.put("innodbBufferPoolSize",innodbBufferPoolSize);
    //            }
    //        }
    //        return hashMap;
    //    }
    //
    //    /**
    //     * 获取打开的最大文件数
    //     * @return
    //     */
    //    public static Map getOpenFiles(String host,String user,String psw,int port,String ulimit){
    //        Map<String, String> hashMap = new HashMap<>();
    //        Map map = exec(host, user, psw, port, ulimit);//ulimit -a
    //        String openFiles = (String) map.get("openFiles");
    //        hashMap.put("openFiles",openFiles);
    //        return hashMap;
    //    }
    //
    //    /**
    //     * 获取nofile
    //     * @param host
    //     * @param user
    //     * @param psw
    //     * @param port
    //     * @param noFile
    //     * @return
    //     */
    //    public static Map getNofile(String host,String user,String psw,int port,String noFile){
    //        Map<String, String> hashMap = new HashMap<>();
    //        Map exec = exec(host, user, psw, port, noFile);//"cat /etc/security/limits.conf"
    //        String hardNofile = getInt((String)exec.get("hardNofile"));
    //        hashMap.put("hardNofile",hardNofile);
    //        String softNofile = getInt((String)exec.get("softNofile"));
    //        hashMap.put("softNofile",softNofile);
    //        return hashMap;
    //    }
    //
    //    /**
    //     * 获取数字
    //     * @param str
    //     * @return
    //     */
    //    private static String getInt(String str){
    //        String regEx="[^0-9]";
    //        Pattern p = Pattern.compile(regEx);
    //        Matcher m = p.matcher(str);
    //        return m.replaceAll("").trim();
    //    }
    }

    pom.xml

    <!--远程连接linux建立SSH连接-->
    <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.46</version>
    </dependency>
  • 相关阅读:
    PHP获取指定分钟数的下一个整数倍
    phpspreadsheet
    澳大利亚 主要城市列表
    db2编目抽取
    openssl实现CA自签证书和颁发数字证书
    基于Docker的redis集群搭建
    Python测试DB2连通性
    在Vim中查看文件编码
    搭建redis集群
    Python(十)之GUI编程
  • 原文地址:https://www.cnblogs.com/javawxid/p/12811866.html
Copyright © 2011-2022 走看看