diff --git a/src/main/java/org/wfc/common/license/license/LinuxServerInfos.java b/src/main/java/org/wfc/common/license/license/LinuxServerInfos.java index d4e97e9..e4be54d 100644 --- a/src/main/java/org/wfc/common/license/license/LinuxServerInfos.java +++ b/src/main/java/org/wfc/common/license/license/LinuxServerInfos.java @@ -1,9 +1,8 @@ package org.wfc.common.license.license; -import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import java.io.BufferedReader; -import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.util.List; @@ -12,12 +11,8 @@ import java.util.stream.Collectors; /** * 用于获取客户Linux服务器的基本信息 */ -@Slf4j public class LinuxServerInfos extends AbstractServerInfos { - private final String[] CPU_SHELL = {"/bin/bash", "-c", "sudo dmidecode -t processor | grep 'ID' | awk -F ':' '{print $2}' | head -n 1"}; - private final String[] MAIN_BOARD_SHELL = {"/bin/bash", "-c", "sudo dmidecode | grep 'Serial Number' | awk -F ':' '{print $2}' | head -n 1"}; - @Override protected List getIpAddress() throws Exception { List result = null; @@ -49,49 +44,43 @@ public class LinuxServerInfos extends AbstractServerInfos { @Override protected String getCPUSerial() throws Exception { - String result = ""; - String CPU_ID_CMD = "sudo dmidecode"; - BufferedReader bufferedReader = null; - Process p = null; - try { - p = Runtime.getRuntime().exec(new String[]{"sh", "-c", CPU_ID_CMD});// 管道 - bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream())); - String line = null; - int index = -1; - while ((line = bufferedReader.readLine()) != null) { - // 寻找标示字符串[hwaddr] - index = line.toLowerCase().indexOf("uuid"); - if (index >= 0) {// 找到了 - // 取出mac地址并去除2边空格 - result = line.substring(index + "uuid".length() + 1).trim(); - break; - } - } - } catch (IOException e) { - log.error("获取cpu硬件信息失败", e); + //序列号 + String serialNumber = ""; + + //使用dmidecode命令获取CPU序列号 + String[] shell = {"/bin/bash", "-c", "dmidecode -t processor | grep 'ID' | awk -F ':' '{print $2}' | head -n 1"}; + Process process = Runtime.getRuntime().exec(shell); + process.getOutputStream().close(); + + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + + String line = reader.readLine().trim(); + if (StringUtils.isNotBlank(line)) { + serialNumber = line; } - return result.trim(); -// return GxServerSerialHelper.getLinuxSerial(CPU_SHELL); + + reader.close(); + return serialNumber; } @Override protected String getMainBoardSerial() throws Exception { - String result = ""; - String maniBord_cmd = "sudo dmidecode | grep 'Serial Number' | awk '{print $3}' | tail -1"; - Process p; - try { - p = Runtime.getRuntime().exec(new String[]{"sh", "-c", maniBord_cmd});// 管道 - BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); - String line; - while ((line = br.readLine()) != null) { - result += line; - break; - } - br.close(); - } catch (IOException e) { - log.error("获取主板信息错误", e); + //序列号 + String serialNumber = ""; + + //使用dmidecode命令获取主板序列号 + String[] shell = {"/bin/bash", "-c", "dmidecode | grep 'Serial Number' | awk -F ':' '{print $2}' | head -n 1"}; + Process process = Runtime.getRuntime().exec(shell); + process.getOutputStream().close(); + + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + + String line = reader.readLine().trim(); + if (StringUtils.isNotBlank(line)) { + serialNumber = line; } - return result; -// return GxServerSerialHelper.getLinuxSerial(MAIN_BOARD_SHELL); + + reader.close(); + return serialNumber; } }