• java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)


    windows:

    package cn.net.comsys.helper.system.info;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.InputStreamReader;
    import java.io.LineNumberReader;
     
    public class HardWareUtils {
     
        /**
         * 获取主板序列号
         *
         * @return
         */
        public static String getMotherboardSN() {
            String result = "";
            try {
                File file = File.createTempFile("realhowto", ".vbs");
                file.deleteOnExit();
                FileWriter fw = new java.io.FileWriter(file);
     
                String vbs = "Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") "
                        + "Set colItems = objWMIService.ExecQuery _ "
                        + "   ("Select * from Win32_BaseBoard") "
                        + "For Each objItem in colItems "
                        + "    Wscript.Echo objItem.SerialNumber "
                        + "    exit for  ' do the first cpu only! " + "Next ";
     
                fw.write(vbs);
                fw.close();
                Process p = Runtime.getRuntime().exec(
                        "cscript //NoLogo " + file.getPath());
                BufferedReader input = new BufferedReader(new InputStreamReader(
                        p.getInputStream()));
                String line;
                while ((line = input.readLine()) != null) {
                    result += line;
                }
                input.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result.trim();
        }
     
        /**
         * 获取硬盘序列号
         *
         * @param drive
         *            盘符
         * @return
         */
        public static String getHardDiskSN(String drive) {
            String result = "";
            try {
                File file = File.createTempFile("realhowto", ".vbs");
                file.deleteOnExit();
                FileWriter fw = new java.io.FileWriter(file);
     
                String vbs = "Set objFSO = CreateObject("Scripting.FileSystemObject") "
                        + "Set colDrives = objFSO.Drives "
                        + "Set objDrive = colDrives.item(""
                        + drive
                        + "") "
                        + "Wscript.Echo objDrive.SerialNumber"; // see note
                fw.write(vbs);
                fw.close();
                Process p = Runtime.getRuntime().exec(
                        "cscript //NoLogo " + file.getPath());
                BufferedReader input = new BufferedReader(new InputStreamReader(
                        p.getInputStream()));
                String line;
                while ((line = input.readLine()) != null) {
                    result += line;
                }
                input.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result.trim();
        }
     
        /**
         * 获取CPU序列号
         *
         * @return
         */
        public static String getCPUSerial() {
            String result = "";
            try {
                File file = File.createTempFile("tmp", ".vbs");
                file.deleteOnExit();
                FileWriter fw = new java.io.FileWriter(file);
                String vbs = "Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") "
                        + "Set colItems = objWMIService.ExecQuery _ "
                        + "   ("Select * from Win32_Processor") "
                        + "For Each objItem in colItems "
                        + "    Wscript.Echo objItem.ProcessorId "
                        + "    exit for  ' do the first cpu only! " + "Next ";
     
                // + "    exit for  " + "Next";
                fw.write(vbs);
                fw.close();
                Process p = Runtime.getRuntime().exec(
                        "cscript //NoLogo " + file.getPath());
                BufferedReader input = new BufferedReader(new InputStreamReader(
                        p.getInputStream()));
                String line;
                while ((line = input.readLine()) != null) {
                    result += line;
                }
                input.close();
                file.delete();
            } catch (Exception e) {
                e.fillInStackTrace();
            }
            if (result.trim().length() < 1 || result == null) {
                result = "无CPU_ID被读取";
            }
            return result.trim();
        }
     
        /**
         * 获取MAC地址
         */
        public static String getMac() {
            String result = "";
            try {
     
                Process process = Runtime.getRuntime().exec("ipconfig /all");
     
                InputStreamReader ir = new InputStreamReader(
                        process.getInputStream());
     
                LineNumberReader input = new LineNumberReader(ir);
     
                String line;
     
                while ((line = input.readLine()) != null)
     
                    if (line.indexOf("Physical Address") > 0) {
     
                        String MACAddr = line.substring(line.indexOf("-") - 2);
     
                        result = MACAddr;
     
                    }
     
            } catch (java.io.IOException e) {
     
                System.err.println("IOException " + e.getMessage());
     
            }
            return result;
        }
     
        public static void main(String[] args) {
            System.out.println("CPU  SN:" + HardWareUtils.getCPUSerial());
            System.out.println("主板  SN:" + HardWareUtils.getMotherboardSN());
            System.out.println("C盘   SN:" + HardWareUtils.getHardDiskSN("c"));
            System.out.println("MAC  SN:" + HardWareUtils.getMac());
        }
     
    }

     Linux:

    命令:

    0、查看CPUID:dmidecode -t processor | grep 'ID'

    1、查看服务器型号:dmidecode | grep 'Product Name'

    2、查看主板的序列号:dmidecode |grep 'Serial Number'

    3、查看系统序列号:dmidecode -s system-serial-number

    4、查看内存信息:dmidecode -t memory

    5、查看OEM信息:dmidecode -t 11

  • 相关阅读:
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Python eval() 函数
    Python repr() 函数
  • 原文地址:https://www.cnblogs.com/zhangkaimin/p/5113245.html
Copyright © 2020-2023  润新知