浏览代码

获取linuxCpu

wangfeng 5 年之前
父节点
当前提交
2fb42d2dab
共有 1 个文件被更改,包括 42 次插入12 次删除
  1. 42 12
      mrqcman-service/src/main/java/com/diagbot/util/SerialNumberUtil.java

+ 42 - 12
mrqcman-service/src/main/java/com/diagbot/util/SerialNumberUtil.java

@@ -242,30 +242,60 @@ public class SerialNumberUtil {
         return null;
     }
 
+    /**
+     *
+     */
+    /**
+     * @param cmd    命令语句
+     * @param record 要查看的字段
+     * @param symbol 分隔符
+     * @return
+     */
+    public static List<String> getSerialNumberLists(String cmd, String record, String symbol) {
+        String execResult = executeLinuxCmd(cmd);
+        String[] infos = execResult.split("\n");
+        List<String> cpuIds = new ArrayList<String>();
+        for (String info : infos) {
+            info = info.trim();
+            if (info.indexOf(record) != -1) {
+                info.replace(" ", "");
+                String[] sn = info.split(symbol);
+                for (int i = 0; i < sn.length; i++) {// 不管是单块CPU还是多CPU都适用
+                    String cpuId = sn[i];
+                    cpuIds.add(cpuId);
+                    System.out.println("第" + (i + 1) + "块CPU信息" + cpuId);
+                }
+                return cpuIds;
+            }
+        }
+
+        return null;
+    }
+
     /**
      * 获取CPUID、硬盘序列号、MAC地址、主板序列号
      *
      * @return
      */
-    public static Map<String, String> getAllSn() {
+    public static Map<String, List<String>> getAllSn() {
         String os = System.getProperty("os.name");
-        Map<String, String> snVo = new HashMap<String, String>();
+        Map<String, List<String>> snVo = new HashMap<String, List<String>>();
 
         if ("LINUX".equals(os)) {
             System.out.println("=============>for linux");
-            String cpuid = getSerialNumber("dmidecode -t processor | grep 'ID'", "ID", ":");
+            List<String> cpuid = getSerialNumberLists("dmidecode -t processor | grep 'ID'", "ID", ":");
             System.out.println("cpuid : " + cpuid);
-            String mainboardNumber = getSerialNumber("dmidecode |grep 'Serial Number'", "Serial Number", ":");
+            List<String> mainboardNumber = getSerialNumberLists("dmidecode |grep 'Serial Number'", "Serial Number", ":");
             System.out.println("mainboardNumber : " + mainboardNumber);
-            String diskNumber = getSerialNumber("fdisk -l", "Disk identifier", ":");
+            List<String> diskNumber = getSerialNumberLists("fdisk -l", "Disk identifier", ":");
             System.out.println("diskNumber : " + diskNumber);
-            String mac = getSerialNumber("ifconfig -a", "ether", " ");
-            snVo.put("cpuid", cpuid.toUpperCase().replace(" ", ""));
-            snVo.put("diskid", diskNumber.toUpperCase().replace(" ", ""));
-            snVo.put("mac", mac.toUpperCase().replace(" ", ""));
-            snVo.put("mainboard", mainboardNumber.toUpperCase().replace(" ", ""));
+            List<String> mac = getSerialNumberLists("ifconfig -a", "ether", " ");
+            snVo.put("cpuid", cpuid);
+            snVo.put("diskid", diskNumber);
+            snVo.put("mac", mac);
+            snVo.put("mainboard", mainboardNumber);
         } else {
-            System.out.println("=============>for windows");
+           /* System.out.println("=============>for windows");
             String cpuid = SerialNumberUtil.getCPUSerial();
             String mainboard = SerialNumberUtil.getMotherboardSN();
             String disk = SerialNumberUtil.getHardDiskSN();
@@ -279,7 +309,7 @@ public class SerialNumberUtil {
             snVo.put("cpuid", cpuid.toUpperCase().replace(" ", ""));
             snVo.put("diskid", disk.toUpperCase().replace(" ", ""));
             snVo.put("mac", mac.toUpperCase().replace(" ", ""));
-            snVo.put("mainboard", mainboard.toUpperCase().replace(" ", ""));
+            snVo.put("mainboard", mainboard.toUpperCase().replace(" ", ""));*/
         }
 
         return snVo;