package com.sinoufc.base.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 com.sinoufc.base.org.json.JSONArray;
import com.sinoufc.base.org.json.JSONException;
import com.sinoufc.base.org.json.JSONObject;
import com.sinoufc.base.permission.baseinfo.dao.BaseInfoDao;
import com.sinoufc.framework.cache.Global;
import com.sinoufc.framework.exception.SystemException;
public class ResolveJSONForShell {
private BaseInfoDao baseInfoDao=(BaseInfoDao) Global.getSpringBean("baseInfoDao");
public static List<String[]> resolveJSONForAllUsers(String ipaddress,String realtimePath) throws IOException{
String shellvalue = executeShell(ipaddress,"host_all_users","",realtimePath);
String ss="{'returncode': 0, 'response': [['qm', 'pts/0', '08:41', '38:09m', '2:16m', '0.58s', '-bash '],"
+"['qm', 'pts/1', '10:07', '0.00s', '0.68s', '0.10s', 'java Shell 192. '],"
+"['qm', 'pts/2', '11:02', '3:43', '0.20s', '0.20s', '-bash '], "
+"['qm', 'pts/3', '13:33', '49:54m', '1:21m', '0.02s', 'sshd: qm [priv] ']], 'time:': 1289890011}";
String nullStr="{'returncode': 0, 'response': [['', '', '', '', '', '', '']]}";
if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
shellvalue=nullStr;
}
List<String[]> userlist=new ArrayList<String[]>();
try{
JSONObject jsonObj = new JSONObject(shellvalue);
JSONArray array= jsonObj.getJSONArray("response");
for(int i=0;i<array.length();i++){
String[] alluserStr={(String)array.getJSONArray(i).get(0),(String) array.getJSONArray(i).get(1),
(String)array.getJSONArray(i).get(2),(String)array.getJSONArray(i).get(3),
(String)array.getJSONArray(i).get(4),(String)array.getJSONArray(i).get(5),
(String)array.getJSONArray(i).get(6)};
userlist.add(alluserStr);
}
}catch(JSONException je){
je.printStackTrace();
throw new SystemException("连接不上主机或者没有数据!");
}
return userlist;
}
public static List<String[]> resolveJSONForDiskSpaceWithTab(String ipaddress,String realtimePath)throws JSONException, IOException{
String shellvalue = executeShell(ipaddress,"host_disk_space","",realtimePath);
String nullStr="{'returncode': 0, 'response': [['', '', '', '', '', '']], "
+ "'time:': 1289891593}";
if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
shellvalue=nullStr;
}
List<String[]> diskSpacelist=new ArrayList<String[]>();
try{
JSONObject jsonObj = new JSONObject(shellvalue);
JSONArray array= jsonObj.getJSONArray("response");
for(int i=0;i<array.length();i++){
String[] alluserStr={ (String)array.getJSONArray(i).get(0),(String) array.getJSONArray(i).get(1),
(String)array.getJSONArray(i).get(2),(String)array.getJSONArray(i).get(3),
(String)array.getJSONArray(i).get(4),(String)array.getJSONArray(i).get(5)};
diskSpacelist.add(alluserStr);
}
}catch(JSONException je){
je.printStackTrace();
throw new SystemException("连接不上主机或者没有数据!");
}
return diskSpacelist;
}
public static List<String[]> resolveJSONForProcessesSnapshot(String ipaddress,String realtimePath)throws JSONException, IOException{
String shellvalue = executeShell(ipaddress,"host_processes_snapshot","",realtimePath);
String nullStr="{'returncode': 0, 'response': [['', '', '', '', '', '', '', '', '', '', '']], 'time:': 1289891863}";
if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
shellvalue=nullStr;
}
List<String[]> processlist=new ArrayList<String[]>();
try{
JSONObject jsonObj = new JSONObject(shellvalue);
JSONArray array= jsonObj.getJSONArray("response");
for(int i=0;i<array.length();i++){
String[] processStr={(String) array.getJSONArray(i).get(0),(String) array.getJSONArray(i).get(1),
(String)array.getJSONArray(i).get(2),(String)array.getJSONArray(i).get(3),
(String)array.getJSONArray(i).get(4),(String)array.getJSONArray(i).get(5),
(String)array.getJSONArray(i).get(6), (String)array.getJSONArray(i).get(7),
(String)array.getJSONArray(i).get(8), (String)array.getJSONArray(i).get(9),
(String)array.getJSONArray(i).get(10)};
processlist.add(processStr);
}
}catch(JSONException je){
je.printStackTrace();
throw new SystemException("连接不上主机或者没有数据!");
}
return processlist;
}
public static String[] resolveJSONForSwapSpace(String ipaddress,String realtimePath) throws JSONException, IOException{
String shellvalue = executeShell(ipaddress,"host_swap_space","",realtimePath);
System.out.println("----------shellvalue:"+shellvalue);
String nullStr = "{'returncode': 0, 'response': [['', '', '']], 'time:': 1289381310}";
if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
shellvalue=nullStr;
}
String[] swapSpaceString = new String[3];
try{
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)));
swapSpaceString[0]=(String) array.getJSONArray(0).get(1);
swapSpaceString[1]=(String)array.getJSONArray(0).get(2);
swapSpaceString[2]=(String)array.getJSONArray(0).get(0);
}catch(JSONException je){
je.printStackTrace();
throw new SystemException("连接不上主机或者没有数据!");
}
return swapSpaceString;
}
public static Map<String,String> resolveJSONForCPUPerformance(String ipaddress,String realtimePath) throws IOException, JSONException{
Map<String,String> map =new HashMap<String,String>();
String shellvalue = executeShell(ipaddress,"host_cpu_performance","",realtimePath);
String nullStr="{'returncode': 0, 'response': [['', '', '', '']], 'time:': 1289878737}";
if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
shellvalue=nullStr;
}
try{
JSONObject jsonObj = new JSONObject(shellvalue);
JSONArray array= jsonObj.getJSONArray("response");
map.put("usertime", (String) array.getJSONArray(0).get(0));
map.put("systemtime", (String) array.getJSONArray(0).get(1));
map.put("wio", (String) array.getJSONArray(0).get(2));
map.put("freetime", (String) array.getJSONArray(0).get(3));
}catch(JSONException je){
je.printStackTrace();
throw new SystemException("连接不上主机或者没有数据!");
}
return map;
}
public static String resolveJSONForCPUUtilization(String ipaddress,String realtimePath) throws IOException{
// String jsonar ="["+randomNum()+"]";
String shellvalue = executeShell(ipaddress,"host_cpu_performance","cpu_utilization",realtimePath);
if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
shellvalue="[ ]";
}
System.out.println("resolveJSONForCPUUtilization:"+shellvalue);
return shellvalue.substring(1,shellvalue.length()-1);
}
public static Map resolveJSONForDiskSpace(String ipaddress,String realtimePath) throws JSONException, IOException{
String shellvalue = executeShell(ipaddress,"host_disk_space","",realtimePath);
Map map=new HashMap();
try{
List<String[]> diList=new ArrayList<String[]>();
List<Double[]> dataList=new ArrayList<Double[]>();
List<String> groupList=new ArrayList<String>();
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])/1024,Double.parseDouble(a[1])/1024,Double.parseDouble(a[2])/1024};
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.put("dataArg",dataArg);
map.put("groupList", groupList);
map.put("rowList", rowList);
}catch(Exception e){
e.printStackTrace();
throw new SystemException("连接不上主机或者没有数据!");
}
return map;
}
public static String[] resolveJSONForMemoryPerformance(String ipaddress,String realtimePath) throws IOException, JSONException{
String shellvalue = executeShell(ipaddress,"host_memory_performance","",realtimePath);
String nullStr = "{'returncode': 0, 'response': [['', '', '']], 'time:': 1289891288}";
if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
shellvalue=nullStr;
}
String[] memoryString=new String[3];
try{
JSONObject jsonObj = new JSONObject(shellvalue);
JSONArray array= jsonObj.getJSONArray("response");
memoryString[0]=(String)array.getJSONArray(0).get(0);
memoryString[1]=(String) array.getJSONArray(0).get(1);
memoryString[2]=(String)array.getJSONArray(0).get(2);
}catch(JSONException je){
je.printStackTrace();
throw new SystemException("连接不上主机或者没有数据!");
}
return memoryString;
}
public static String[] resolveJSONForMemoryUsed(String ipaddress,String realtimePath) throws IOException, JSONException{
String shellvalue = executeShell(ipaddress,"host_memory_performance","",realtimePath);
String[] memoryUsedStr=new String[2];
String nullStr = "{'returncode': 0, 'response': [['', '', '']], 'time:': 1289891288}";
if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
shellvalue=nullStr;
}
try{
JSONObject jsonObj = new JSONObject(shellvalue);
JSONArray array= jsonObj.getJSONArray("response");
memoryUsedStr[0]=(String)array.getJSONArray(0).get(0);
memoryUsedStr[1]=(String) array.getJSONArray(0).get(1);
System.out.println("shellvalue"+shellvalue);
}catch(JSONException je){
je.printStackTrace();
throw new SystemException("连接不上主机或者没有数据!");
}
return memoryUsedStr;
}
public static String executeShell(String ip,String var1,String var2,String realtimePath) throws IOException {
StringBuffer stringBuffer = new StringBuffer();
String line="";
InputStreamReader ir=null;
LineNumberReader input=null;
// HttpServletRequest request = (HttpServletRequest) ActionContext
//.getContext().get(ServletActionContext.HTTP_REQUEST);
// String root=request.getRealPath("/Shell");
// System.out.println("Reallllllllllllllpath:"+root);
//String filePath=null;
/* try{
filePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();
filePath =filePath.replace("WEB-INF/classes/", "");
System.out.println("filePath@@@@@@@@@@@:"+filePath);
}catch(Exception e){
e.printStackTrace();
}*/
// String path = httpServletRequest.getRealPath("/");
try {
Process pid = null;
//String[] cmd = {"/bin/bash","-c","./shell/test.sh "+ip+" "+var1+" "+var2}; ----ok
//String[] cmd = {"/bin/bash ","-c ","./shell/test.sh "+ip+" "+var1+" "+var2}; ----ng
//String[] cmd = {"/bin/bash","","./shell/test.sh "+ip+" "+var1+" "+var2}; ----ng
//String[] cmd = {"sh","-c","./shell/test.sh "+ip+" "+var1+" "+var2}; ----ng
String filePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();
filePath =filePath.replace("WEB-INF/classes/", "");
String[] cmd = {"/bin/bash","-c",filePath+"shell/test.sh "+ip+" "+var1+" "+var2};
//String[] cmd = {"/bin/bash","-c","./shell/hello.sh "+ip+" "+var1+" "+var2};
System.out.println("****************"+cmd[0]+cmd[1]+cmd[2]);
pid = Runtime.getRuntime().exec(cmd);
if (pid != null) {
ir=new InputStreamReader(pid.getInputStream());
input = new LineNumberReader (ir);
line = input.readLine();
System.out.println(line);
}
} catch (Exception ioe) {
stringBuffer.append(ioe.getMessage());
}finally{
ir.close();
input.close();
}
return line;
}
private static int randomNum()
{
System.out.println((Math.random()*10000+50000));
return (int)(Math.random()*10000+50000);
}
/* public static void main(String[] arg) throws IOException{
executeShell(arg[0],arg[1],arg[2]);
} */
}
分享到:
相关推荐
附件内容为:Java组装map数据,然后转换为json数据格式;Java解析json数据
2. Gson:Gson是Google提供的库,能够将Java对象转换为JSON格式的字符串,以及将JSON数据转换回等效的Java对象。Gson的主要优势在于其简单易用的API。 3. JSON-P(Java API for JSON Processing):这是Java标准API...
本篇将详细讲解如何在Android应用中解析JSON数据,主要涉及以下几个方面: 1. JSON基本结构 JSON由两种基本结构构成:对象(Object)和数组(Array)。对象是以花括号 `{}` 包围的键值对集合,键用双引号括起,如`...
本教程将深入探讨在Android中如何解析和处理JSON数据。 首先,我们需要理解JSON的基本结构。JSON是一种基于键值对的数据表示方式,主要由对象(Object)和数组(Array)构成。对象用花括号 `{}` 包裹,键值对以冒号...
使用该方法可以轻松解析JSON数组,方便取出JSON数据
本篇文章将深入探讨如何在Java中解析JSON格式的数据,我们将参考提供的博文链接进行讲解。 首先,Java中解析JSON主要有两个主流库:Jackson和Gson。Jackson是目前最流行的Java JSON库之一,它提供了高性能和丰富的...
Java中解析JSON数据主要依赖于一些库,如org.json库(包含JSONObject和JSONArray类)。 在Java中,解析JSON数据的步骤通常分为以下几个部分: 1. **导入相关库**:首先,你需要在项目中引入JSON库。如果是使用...
以上就是使用Java解析JSON的基本操作,包括从字符串、文件或网络获取JSON数据,以及将Java对象序列化为JSON。在实际项目中,你可能还需要处理更复杂的JSON结构,比如嵌套的对象和数组,以及处理错误情况。对于更复杂...
在Java开发中,处理JSON数据是必不可少的一项技能。`json.jar` 是一个专为Java设计的JSON解析库,它包含了一系列API,帮助开发者高效地解析和生成JSON格式的数据。 在`json.jar` 中,主要的类和接口包括: 1. **...
通过以上步骤,我们可以在Kettle中有效地解析JSON数据,并将其写入数据库中。这不仅可以提高数据处理的效率,还可以确保数据的一致性和准确性。此外,使用Java库如`JSON Simple`可以更加灵活地处理各种类型的JSON...
C#的一个解析JSON的工具类,像java一样优雅的解析JSON数据,包含有JSONObject和JSONArray对象。 JSONObject json = new JSONObject(); json.Put("sex", "男"); json.Put("age", 123); json.Put("name", "张三"); ...
本篇文章将深入探讨如何在Java中解析JSON数据。 首先,我们需要一个JSON库来帮助我们进行解析工作。Java标准库并不内置JSON处理功能,但有多个开源库可供选择,如Gson、Jackson、org.json和JSON-P。这里我们以广泛...
解决当内存资源不充足时大数据量的JSON文本解析为JSON对象会导致内存溢出的问题。 基于org.json的部分源代码,以及新增的JsonLazyer类。 原理:用时创建的规则降低传统解析器一次性将文本转成Java对象而占用大量内存...
本Java类实现了将标准的json字符串转换成map,并将数据解析到Excel的方法,本方法简单实用,可以批量导出数据到Excel文档中
对于Java Web服务端获取JSON数据,通常涉及到Servlet、JSP或Spring MVC等框架。当客户端通过HTTP请求发送JSON数据时,服务端需要解析这些数据。例如,在Servlet中,可以使用HttpServletRequest的getInputStream方法...
以下将详细介绍在Java中如何解决HTTP请求传输JSON数据出现乱码的问题。 首先,我们了解乱码出现的原因。HTTP协议是基于ASCII的,而在HTTP协议中传输中文字符时,如果没有明确指定字符编码,服务器和浏览器可能会...
在Android开发中,JSON...总的来说,Android中的JSON数据解析是通过理解JSON结构,结合`org.json`库或Gson库,以及适当的网络请求库来实现的。合理使用这些工具,能有效地处理和展示从服务器获取的JSON数据。
在Java中,有许多库可以用来解析和生成JSON数据,其中最常用的包括Jackson、Gson、org.json和Fastjson等。本篇文章将详细介绍这些JSON库的使用方法以及它们的特点。 1. **Jackson** Jackson是Java开发中最流行的...
本篇文章将详细介绍如何创建一个实用的JSON数据解析封装类,以便快速有效地处理各种形式的JSON数据。 首先,我们需要引入一个JSON库,Android SDK本身包含了org.json库,但为了更强大的功能和更好的性能,推荐使用...
此压缩包包含两个jar:json-lib-2.4-jdk15.jar和ezmorph-1.0.6.jar 这两个包都是java解析json数据的依赖包,而且是最新版,开源的东东好多人还要分,俺不要分,只希望对你有用。