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);
}
}
分享到:
相关推荐
在Java编程中,有时我们需要与操作系统进行交互...总的来说,通过`Runtime`类,我们可以方便地在Java程序中执行Linux命令和shell脚本,实现客户端的多次调用。但同时需要注意异常处理和资源管理,以保证程序的健壮性。
Java Socket远程调用Shell是一种通过Java程序利用Socket通信协议实现对远程服务器的Shell命令执行的技术。这种方式常用于系统管理、自动化运维或者分布式系统的组件交互。下面将详细介绍这一技术的实现原理、步骤...
在Java中,我们可以使用`Runtime.getRuntime().exec()`方法来执行Shell命令。如果需要传递参数给Shell脚本,可以在执行的命令字符串中加入相应的参数。例如,`exec("sh xx.sh arg1 arg2")`语句中的`arg1`和`arg2`...
在 Java 中,我们可以使用 `Runtime` 类的 `exec()` 方法来调用 Shell 命令。下面是一个简单的示例代码: ```java Process pid = Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", "ls -l"}); ``` 在这个...
首先,Java通过Runtime类或ProcessBuilder类可以执行外部程序,包括Shell脚本。`Runtime.getRuntime().exec()`方法是较早期的调用方式,而`ProcessBuilder`则是在Java 5之后引入的,提供更灵活的进程控制。 1. **...
2. **调用Shell脚本**:通过Java的`Runtime.getRuntime().exec()`方法来执行Shell命令或脚本。 下面是一个具体的Java类实现示例,用于调用Shell脚本并记录执行日志: ```java import java.io.*; import java.text....
总结起来,Java通过多种方式可以读取Windows、Linux和Mac OS的硬件信息,包括JNI、shell命令、系统接口等。开发者可以根据具体需求选择合适的方法,并通过设计模式实现跨平台的兼容性。在实际编程中,注意处理好异常...
这段代码创建了两个读取器,用于逐行读取Shell脚本的输出,并打印到控制台。需要注意的是,当Shell脚本执行完毕后,必须关闭读取器,以释放资源。 ### 高级用法与注意事项 - **错误处理**:除了标准输出外,Shell...
1. **Java与Shell脚本的桥梁:Runtime类和ProcessBuilder类** Java提供了两种主要的方式来调用外部程序,包括Shell脚本:`Runtime.getRuntime().exec()` 和 `ProcessBuilder`。`Runtime.exec()` 是较老的方法,而`...
在Java编程中,经常需要执行一些外部的可执行文件或者脚本(如bat或shell脚本)。本文将详细介绍三种常用的方法:`Runtime.exec()`、`ProcessBuilder`以及`commons-exec`库。 #### 1. 使用`Runtime.exec()` `...
在Java中,我们可以使用Runtime或者ProcessBuilder类来执行外部命令,例如Shell脚本。以下是一个简单的示例: ```java public class CommandExe { public static void main(String[] args) { String command = ...
本问题聚焦于如何通过Java调用shell脚本,向DataX传递参数,特别是包含特殊字符的where条件。在实际操作中,这可能会涉及到字符串转义、参数安全传递以及shell命令的构建等多个技术点。 首先,我们需要理解DataX的...
总结来说,Java通过`Runtime`和`ProcessBuilder`类提供了强大的能力来执行DOS命令、Shell脚本和BAT文件,这使得Java应用程序能够方便地与操作系统进行交互,扩展其功能。在实际开发中,根据具体需求选择合适的方法,...
下面是一个完整的Java程序示例,演示如何调用并读取Shell脚本的输出: ```java import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class RunShell { ...
Java编程语言具有跨平台的能力,这使得它在各种操作系统上都能运行。在Windows和Linux环境中,启动批处理脚本(bat)...通过这种方式,开发者可以在Java程序中灵活地调用操作系统级别的功能,实现更复杂的自动化流程。
首先,Java调用shell脚本主要通过`Runtime`类或`ProcessBuilder`类来实现。`Runtime.getRuntime().exec()`方法允许我们执行系统命令,而`ProcessBuilder`提供了更灵活的命令构建和环境变量设置功能。下面是一个基本...
Java中可以通过`java.lang.Runtime`类中的`exec()`方法来执行外部命令,进而调用Shell脚本或Python脚本。以下是一个基本的例子: ```java public String python(String pythonPath, String[] params) { File file ...
综上所述,"Android程序中(APK程序)执行Adb shell命令"涉及到利用Java的Runtime或ProcessBuilder类来调用系统shell,执行特定的命令。这个过程需要理解ADB的作用,以及如何在Android应用程序中安全地使用shell命令...
本教程将深入讲解如何在Android应用中通过Java代码执行shell命令,以提升应用的功能和效率。 一、Android与Shell命令 Android系统基于Linux内核,因此支持使用Linux命令行工具,即shell命令。这些命令提供了对系统...