`
eagletony
  • 浏览: 42017 次
  • 来自: ...
社区版块
存档分类
最新评论

java 通过Runtime 读取shell

阅读更多
package realtimeMonitor;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class ResolveJSONForShell {
		public static String[] resolveJSONForSwapSpace() throws JSONException, IOException{
		    String shellvalue = executeShell("192.168.8.202","host_swap_space","");
			
			// String json = "{'returncode': 0, 'response':  [['6010872', '"+randomNum()+"', '"+randomNum()+"']], 'time': 1289024723}";
			  JSONObject jsonObj = new JSONObject(shellvalue);
			  JSONArray array= jsonObj.getJSONArray("response");
			  
			  System.out.println(array);
			  System.out.println("used:"+(array.getJSONArray(0).get(1)));
			  System.out.println("free:"+(array.getJSONArray(0).get(2)));
			  String[] swapSpaceString={(String) array.getJSONArray(0).get(1),(String)array.getJSONArray(0).get(2)};
			  return swapSpaceString;
		}
		/*public static String resolveJSONForCPUPerformance(){
			String jsonar ="[6]";
			return jsonar.substring(1,2);
		}*/
		public static String resolveJSONForCPUUtilization() throws IOException{
		//	String jsonar ="["+randomNum()+"]";
			String shellvalue = executeShell("192.168.8.202","host_cpu_performance","cpu_utilization");
			
			return shellvalue.substring(1,2);
		}
		public static Map resolveJSONForDiskSpace() throws JSONException, IOException{
			 String shellvalue = executeShell("192.168.8.202","host_disk_space","");
			List<String[]> diList=new ArrayList<String[]>();
			List<Double[]> dataList=new ArrayList<Double[]>();
			List<String> groupList=new ArrayList<String>();
			
			/*String jsonDs="{'returncode': 0, 'response':" +
					" [['/dev/sda6', '"+randomNum()+"', '"+randomNum()+"', '"+randomNum()+"', '6', '/'], " +
					"['none', '"+randomNum()+"', '"+randomNum()+"', '"+randomNum()+"', '1', '/dev']," +
					" ['none', '"+randomNum()+"', '"+randomNum()+"', '"+randomNum()+"', '1', '/dev/shm']," +
					" ['none', '"+randomNum()+"', '"+randomNum()+"', '"+randomNum()+"', '1', '/var/run']," +
					" ['none', '"+randomNum()+"', '"+randomNum()+"', '"+randomNum()+"', '0', '/var/lock']," +
					" ['none', '"+randomNum()+"', '"+randomNum()+"', '"+randomNum()+"', '0', '/lib/init/rw']], 'time:': 1289271097}";*/
			JSONObject jsonObj = new JSONObject(shellvalue);
			JSONArray array= jsonObj.getJSONArray("response");
			
			for(int i=0;i<array.length();i++){				
				String[] arrays={(String) array.getJSONArray(i).get(1),
						((String) array.getJSONArray(i).get(2)),
						((String) array.getJSONArray(i).get(3)),
						((String) array.getJSONArray(i).get(5))};
				diList.add(arrays);
			}
			
			for(String[] a: diList){
				
				Double[] data={Double.parseDouble(a[0]),Double.parseDouble(a[1]),Double.parseDouble(a[2])};
				dataList.add(data);
				groupList.add(a[3]);
			}
			
			double[][] dataArg=new double[3][dataList.size()];
			
			for(int i=0;i<dataList.size();i++){
				
				System.out.println((dataList.get(i))[0]);
				System.out.println((dataList.get(i))[1]);
				System.out.println((dataList.get(i))[2]);
				
				dataArg[0][i]=(dataList.get(i))[0];
				dataArg[1][i]=(dataList.get(i))[1];
				dataArg[2][i]=(dataList.get(i))[2];
			}
			List rowList=new ArrayList();
			rowList.add("all");
			rowList.add("used");
			rowList.add("free");
			
			Map map=new HashMap();
			map.put("dataArg",dataArg);
			map.put("groupList", groupList);
			map.put("rowList", rowList);
		
			return map;
		}
		
		public static String resolveJSONForMemoryPerformance(){
			return null;
		}
		
		public static String resolveJSONForMemoryUsed() throws IOException{
			String shellvalue = executeShell("192.168.8.202","host_memory_performance","memory_used");
		//	String jsonmu="["+randomNum()+"]";
			return shellvalue.substring(1, 2);
		}
		
		
		
		public static void  main(String arg[]) throws JSONException, IOException{
			resolveJSONForDiskSpace();
			
		}

		 public static String executeShell(String ip,String var1,String var2) throws IOException {
             StringBuffer stringBuffer = new StringBuffer();
             String line="";
              try {
            	  
            	 String filePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();
            	 filePath =filePath.replace("WebRoot/WEB-INF/classes/", "");
                 System.out.println("filePath :"+filePath );      
            	 Process pid = null;
                    //      String[] cmd = {"/bin/bash", "-c", "/home/qm/shell_test/test.sh 192.168.8.202 get_oracle_cpu"};
                            String[] cmd = {"/bin/bash","-c","/home/qm/shell_test/test.sh "+ip+" "+var1+" "+var2}; //192.168.8.202 get_oracle_cpu"};
                                    pid = Runtime.getRuntime().exec(cmd);
                                    if (pid != null) {
                                    //      stringBuffer.append(pid.exitValue());
                            //              bufferedReader = new BufferedReader(new InputStreamReader(pid.getInputStream()), 1024;)
                                            InputStreamReader ir=new InputStreamReader(pid.getInputStream());
                                            LineNumberReader input = new LineNumberReader (ir);
                                           
                                            while ((line = input.readLine ()) != null)
                                            System.out.println(line);
                                    //      System.out.println(stringBuffer);
                                    } 
                    } catch (Exception ioe) {
                            stringBuffer.append(ioe.getMessage());
                    }
              return line;
     } 
   
		private static int randomNum()   
	    {      
	        System.out.println((Math.random()*10000+50000));         
	        return (int)(Math.random()*10000+50000);   
	    }
			 

}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    使用runtime实现linux命令行或shell脚本多次调用

    在Java编程中,有时我们需要与操作系统进行交互...总的来说,通过`Runtime`类,我们可以方便地在Java程序中执行Linux命令和shell脚本,实现客户端的多次调用。但同时需要注意异常处理和资源管理,以保证程序的健壮性。

    java Sokcet远程调用shell

    Java Socket远程调用Shell是一种通过Java程序利用Socket通信协议实现对远程服务器的Shell命令执行的技术。这种方式常用于系统管理、自动化运维或者分布式系统的组件交互。下面将详细介绍这一技术的实现原理、步骤...

    java调用shell(包含有参数的调用)

    在Java中,我们可以使用`Runtime.getRuntime().exec()`方法来执行Shell命令。如果需要传递参数给Shell脚本,可以在执行的命令字符串中加入相应的参数。例如,`exec("sh xx.sh arg1 arg2")`语句中的`arg1`和`arg2`...

    java调用shell命令.pdf

    在 Java 中,我们可以使用 `Runtime` 类的 `exec()` 方法来调用 Shell 命令。下面是一个简单的示例代码: ```java Process pid = Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", "ls -l"}); ``` 在这个...

    java调用shell脚本

    首先,Java通过Runtime类或ProcessBuilder类可以执行外部程序,包括Shell脚本。`Runtime.getRuntime().exec()`方法是较早期的调用方式,而`ProcessBuilder`则是在Java 5之后引入的,提供更灵活的进程控制。 1. **...

    Java 调用 Shell 命令

    2. **调用Shell脚本**:通过Java的`Runtime.getRuntime().exec()`方法来执行Shell命令或脚本。 下面是一个具体的Java类实现示例,用于调用Shell脚本并记录执行日志: ```java import java.io.*; import java.text....

    java读取服务器硬件信息(windowx+linux+Mac OS)

    总结起来,Java通过多种方式可以读取Windows、Linux和Mac OS的硬件信息,包括JNI、shell命令、系统接口等。开发者可以根据具体需求选择合适的方法,并通过设计模式实现跨平台的兼容性。在实际编程中,注意处理好异常...

    java调用shell

    这段代码创建了两个读取器,用于逐行读取Shell脚本的输出,并打印到控制台。需要注意的是,当Shell脚本执行完毕后,必须关闭读取器,以释放资源。 ### 高级用法与注意事项 - **错误处理**:除了标准输出外,Shell...

    java调用shell脚本完美封装

    1. **Java与Shell脚本的桥梁:Runtime类和ProcessBuilder类** Java提供了两种主要的方式来调用外部程序,包括Shell脚本:`Runtime.getRuntime().exec()` 和 `ProcessBuilder`。`Runtime.exec()` 是较老的方法,而`...

    java执行可执行文件,Runtime.exec、ProcessBuilder、commons-exec

    在Java编程中,经常需要执行一些外部的可执行文件或者脚本(如bat或shell脚本)。本文将详细介绍三种常用的方法:`Runtime.exec()`、`ProcessBuilder`以及`commons-exec`库。 #### 1. 使用`Runtime.exec()` `...

    java调用shell向DataX传参,带where条件,特殊字符

    在Java中,我们可以使用Runtime或者ProcessBuilder类来执行外部命令,例如Shell脚本。以下是一个简单的示例: ```java public class CommandExe { public static void main(String[] args) { String command = ...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    本问题聚焦于如何通过Java调用shell脚本,向DataX传递参数,特别是包含特殊字符的where条件。在实际操作中,这可能会涉及到字符串转义、参数安全传递以及shell命令的构建等多个技术点。 首先,我们需要理解DataX的...

    java_dos_shell_bat

    总结来说,Java通过`Runtime`和`ProcessBuilder`类提供了强大的能力来执行DOS命令、Shell脚本和BAT文件,这使得Java应用程序能够方便地与操作系统进行交互,扩展其功能。在实际开发中,根据具体需求选择合适的方法,...

    java调用Shell脚本.doc

    下面是一个完整的Java程序示例,演示如何调用并读取Shell脚本的输出: ```java import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class RunShell { ...

    java在win下启动bat和在linux下启动shell脚本

    Java编程语言具有跨平台的能力,这使得它在各种操作系统上都能运行。在Windows和Linux环境中,启动批处理脚本(bat)...通过这种方式,开发者可以在Java程序中灵活地调用操作系统级别的功能,实现更复杂的自动化流程。

    Java调用shell脚本

    首先,Java调用shell脚本主要通过`Runtime`类或`ProcessBuilder`类来实现。`Runtime.getRuntime().exec()`方法允许我们执行系统命令,而`ProcessBuilder`提供了更灵活的命令构建和环境变量设置功能。下面是一个基本...

    Java代码中调用shell脚本和python脚本并获得输出结果(分为小数据量和大数据量).docx

    Java中可以通过`java.lang.Runtime`类中的`exec()`方法来执行外部命令,进而调用Shell脚本或Python脚本。以下是一个基本的例子: ```java public String python(String pythonPath, String[] params) { File file ...

    Android程序中(APK程序)执行Adb shell 命令

    综上所述,"Android程序中(APK程序)执行Adb shell命令"涉及到利用Java的Runtime或ProcessBuilder类来调用系统shell,执行特定的命令。这个过程需要理解ADB的作用,以及如何在Android应用程序中安全地使用shell命令...

    Android中级篇之用JAVA代码执行shell命令.rar_Android 执行shell_android_effectoh

    本教程将深入讲解如何在Android应用中通过Java代码执行shell命令,以提升应用的功能和效率。 一、Android与Shell命令 Android系统基于Linux内核,因此支持使用Linux命令行工具,即shell命令。这些命令提供了对系统...

Global site tag (gtag.js) - Google Analytics