代码
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GetServerResourceUtil {
private static List<String> cmds = new LinkedList<String>() {{
add("top -bn1|grep load |awk '{print $14}'");
add("echo \"|\"");
add("top -bn1|grep Cpu|awk '{print $2}'");
add("echo \"|\"");
add("free |grep Mem|awk '{print $2\"_\"$3}'");
add("echo \"|\"");
add("df -h | awk '{print $1\"_\"$5}'");
}};
public static ServerResource get(String ip, Integer port, String username, String password) {
String rs = RemoteShUtil.run(ip, port, username, password, cmds.stream().collect(Collectors.joining(" && ")));
String[] rsl = rs.split("[|]");
String[] mems = rsl[2].split("_");
Double memUseRate = DoubleUtil.round(Double.parseDouble(mems[1]) / Double.parseDouble(mems[0]) * 100.0, 2);
Map<String, Double> diskUseRate = new HashMap<>();
for (String s : rsl[3].split("\n")) {
String[] strings = s.split("_");
if (!strings[0].startsWith("/")) {
continue;
}
diskUseRate.put(strings[0], Double.parseDouble(strings[1].replace("%", "")));
}
return new ServerResource(
Double.parseDouble(rsl[0].replace(",", "").replaceAll(" ", "")),
Double.parseDouble(rsl[1].replace(",", "").replaceAll(" ", "")),
memUseRate,
diskUseRate);
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class ServerResource {
private Double cpuLoad;
private Double cpuUseRate;
private Double memUseRate;
private Map<String, Double> diskUseRate;
}
}
maven依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.14</version>
</dependency>
java依赖
DoubleUtil: Java 常用工具类(29) : 保留小数_java 保留小数 工具类-CSDN博客
RemoteShUtil: shell(51) : java执行远程sh命令-CSDN博客