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 e316d66..255c6e4 100644 --- a/src/main/java/org/wfc/common/license/license/LinuxServerInfos.java +++ b/src/main/java/org/wfc/common/license/license/LinuxServerInfos.java @@ -1,8 +1,7 @@ package org.wfc.common.license.license; -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; @@ -13,6 +12,9 @@ import java.util.stream.Collectors; */ public class LinuxServerInfos extends AbstractServerInfos { + private final String[] CPU_SHELL = {"/bin/bash", "-c", "dmidecode -t processor | grep 'ID' | awk -F ':' '{print $2}' | head -n 1"}; + private final String[] MAIN_BOARD_SHELL = {"/bin/bash", "-c", "dmidecode | grep 'Serial Number' | awk -F ':' '{print $2}' | head -n 1"}; + @Override protected List getIpAddress() throws Exception { List result = null; @@ -44,43 +46,49 @@ public class LinuxServerInfos extends AbstractServerInfos { @Override protected String getCPUSerial() throws Exception { - //序列号 - String serialNumber = ""; - - //使用dmidecode命令获取CPU序列号 - String[] shell = {"/bin/bash", "-c", "sudo 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; + String result = ""; + String CPU_ID_CMD = "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) { + System.out.println("获取cpu硬件信息失败 " + e); } - - reader.close(); - return serialNumber; + return result.trim(); +// return GxServerSerialHelper.getLinuxSerial(CPU_SHELL); } @Override protected String getMainBoardSerial() throws Exception { - //序列号 - String serialNumber = ""; - - //使用dmidecode命令获取主板序列号 - String[] shell = {"/bin/bash", "-c", "sudo 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; + String result = ""; + String maniBord_cmd = "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) { + System.out.println("获取主板信息错误" + e); } - - reader.close(); - return serialNumber; + return result; +// return GxServerSerialHelper.getLinuxSerial(MAIN_BOARD_SHELL); } }