{"id":872,"date":"2021-01-27T14:55:18","date_gmt":"2021-01-27T06:55:18","guid":{"rendered":"http:\/\/www.dongchangbin.net.cn\/?p=872"},"modified":"2021-01-27T14:55:23","modified_gmt":"2021-01-27T06:55:23","slug":"java%e8%af%bb%e5%8f%96%e7%b3%bb%e7%bb%9f%e7%a1%ac%e4%bb%b6%e4%bf%a1%e6%81%af","status":"publish","type":"post","link":"https:\/\/www.dongchangbin.net.cn\/?p=872","title":{"rendered":"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f"},"content":{"rendered":"\n<p>\u96c6\u5408\u4e86\u7f51\u4e0a\u7684Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f\u7684\u53ef\u7528\u4ee3\u7801\uff0cWindows\u4e0a\u4f7f\u7528\u811a\u672c\u53bb\u8bfb\u53d6\uff0clinux\u4e0a\u4f7f\u7528\u547d\u4ee4\u6216\u8005\u811a\u672c\u8bfb\u53d6\uff0c\u4f46linux\u4e2d\u5b58\u5728\u6743\u9650\u95ee\u9898\uff01<\/p>\n\n\n\n<p>import java.io.BufferedReader;<br>import java.io.File;<br>import java.io.FileWriter;<br>import java.io.IOException;<br>import java.io.InputStream;<br>import java.io.InputStreamReader;<br>import java.io.LineNumberReader;<br>import java.net.InetAddress;<br>import java.net.NetworkInterface;<br>import java.util.ArrayList;<br>import java.util.Enumeration;<br>import java.util.List;<br>import java.util.Scanner;<br>import java.util.concurrent.TimeUnit;<br>import java.util.regex.Matcher;<br>import java.util.regex.Pattern;<\/p>\n\n\n\n<p>import javax.swing.LookAndFeel;<\/p>\n\n\n\n<p>import org.apache.log4j.Logger;<\/p>\n\n\n\n<p>public class HardWareUtils {<br>private static Logger logger = Logger.getLogger(HardWareUtils.class);<br>private static String OSName =System.getProperty(&#8220;os.name&#8221;).toLowerCase();<br>public static List listResult = new ArrayList();<br>public HardWareUtils() {<br>logger.info(&#8220;&#8212;&#8212;\u5f53\u524d\u7cfb\u7edf\u7248\u672c&#8212;&#8211;\uff1a&#8221;+OSName);<br>}<br>\/**<br>* \u83b7\u53d6\u5f53\u524d\u64cd\u4f5c\u7cfb\u7edf\u540d\u79f0<br>*\/<br>public static String getOSName() {<br>return OSName;<br>}<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u4e3b\u677f\u5e8f\u5217\u53f7 windows\nprivate static String getMainBordId_windows() {\n    String result = \"\";\n    try {\n        File file = File.createTempFile(\"realhowto\", \".vbs\");\n        file.deleteOnExit();\n        FileWriter fw = new java.io.FileWriter(file);\n\n        String vbs = \"Set objWMIService = GetObject(\\\"winmgmts:\\\\\\\\.\\\\root\\\\cimv2\\\")\\n\"\n                + \"Set colItems = objWMIService.ExecQuery _ \\n\" + \"   (\\\"Select * from Win32_BaseBoard\\\") \\n\"\n                + \"For Each objItem in colItems \\n\" + \"    Wscript.Echo objItem.SerialNumber \\n\"\n                + \"    exit for  ' do the first cpu only! \\n\" + \"Next \\n\";\n\n        fw.write(vbs);\n        fw.close();\n        Process p = Runtime.getRuntime().exec(\"cscript \/\/NoLogo \" + file.getPath());\n        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));\n        String line;\n        while ((line = input.readLine()) != null) {\n            result += line;\n        }\n        input.close();\n    } catch (Exception e) {\n        logger.error(\"\u83b7\u53d6\u4e3b\u677f\u4fe1\u606f\u9519\u8bef\", e);\n    }\n    return result.trim();\n}\n\n\/\/ \u4e3b\u677f\u5e8f\u5217\u53f7 linux\nprivate static String getMainBordId_linux() {\n\n    String result = \"\";\n    String maniBord_cmd = \"dmidecode | grep 'Serial Number' | awk '{print $3}' | tail -1\";\n    Process p;\n    try {\n        p = Runtime.getRuntime().exec(new String&#91;] { \"sh\", \"-c\", maniBord_cmd });\/\/ \u7ba1\u9053\n        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));\n        String line;\n        while ((line = br.readLine()) != null) {\n            result += line;\n            break;\n        }\n        br.close();\n    } catch (IOException e) {\n        logger.error(\"\u83b7\u53d6\u4e3b\u677f\u4fe1\u606f\u9519\u8bef\", e);\n    }\n    return result;\n}\n\n\/**\n * \u83b7\u53d6mac\u5730\u5740 \uff08\u5982\u679cLinux\u4e0b\u6709eth0\u8fd9\u4e2a\u7f51\u5361\uff09\n *\/\nprivate static String getMAC_linux() {\n    String mac = null;\n    BufferedReader bufferedReader = null;\n    Process process = null;\n    try {\n        \/\/ linux\u4e0b\u7684\u547d\u4ee4\uff0c\u4e00\u822c\u53d6eth0\u4f5c\u4e3a\u672c\u5730\u4e3b\u7f51\u5361\n        process = Runtime.getRuntime().exec(\"ifconfig eth0\");\n        \/\/ \u663e\u793a\u4fe1\u606f\u4e2d\u5305\u542b\u6709mac\u5730\u5740\u4fe1\u606f\n        bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));\n        String line = null;\n        int index = -1;\n        while ((line = bufferedReader.readLine()) != null) {\n            \/\/ \u5bfb\u627e\u6807\u793a\u5b57\u7b26\u4e32&#91;hwaddr]\n            index = line.toLowerCase().indexOf(\"hwaddr\");\n            if (index &gt;= 0) {\/\/ \u627e\u5230\u4e86\n                \/\/ \u53d6\u51famac\u5730\u5740\u5e76\u53bb\u96642\u8fb9\u7a7a\u683c\n                mac = line.substring(index + \"hwaddr\".length() + 1).trim();\n                break;\n            }\n        }\n    } catch (IOException e) {\n        logger.error(\"\u83b7\u53d6mac\u4fe1\u606f\u9519\u8bef\", e);\n    } finally {\n        try {\n            if (bufferedReader != null) {\n                bufferedReader.close();\n            }\n        } catch (IOException e1) {\n            logger.error(\"\u83b7\u53d6mac\u4fe1\u606f\u9519\u8bef\", e1);\n        }\n        bufferedReader = null;\n        process = null;\n    }\n    return mac;\n}\n\n\/**\n* \u83b7\u53d6Linux\u7684mac\n*\/\nprivate static String getMAC_linuxs() {\n\n    String mac = null;\n    BufferedReader bufferedReader = null;\n    Process process = null;\n    try {\n        \/\/ linux\u4e0b\u7684\u547d\u4ee4\uff0c\u4e00\u822c\u53d6eth0\u4f5c\u4e3a\u672c\u5730\u4e3b\u7f51\u5361\n        process = Runtime.getRuntime().exec(\"ifconfig\");\n        \/\/ \u663e\u793a\u4fe1\u606f\u4e2d\u5305\u542b\u6709mac\u5730\u5740\u4fe1\u606f\n        bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));\n        String line = null;\n        int index = -1;\n         while ((line = bufferedReader.readLine()) != null) \n         {\n             Pattern pat = Pattern.compile(\"\\\\b\\\\w+:\\\\w+:\\\\w+:\\\\w+:\\\\w+:\\\\w+\\\\b\");\n             Matcher mat= pat.matcher(line);\n             if(mat.find())\n             {\n                 mac=mat.group(0);\n             }\n         }\n\n    } catch (IOException e) {\n        logger.error(\"\u83b7\u53d6mac\u4fe1\u606f\u9519\u8bef\", e);\n    } finally {\n        try {\n            if (bufferedReader != null) {\n                bufferedReader.close();\n            }\n        } catch (IOException e1) {\n            logger.error(\"\u83b7\u53d6mac\u4fe1\u606f\u9519\u8bef\", e1);\n        }\n        bufferedReader = null;\n        process = null;\n    }\n    return mac;\n}\n\n\/**\n * \u83b7\u53d6widnows\u7f51\u5361\u7684mac\u5730\u5740.\n *\/\nprivate static String getMAC_windows() {\n    InetAddress ip = null;\n    NetworkInterface ni = null;\n    List&lt;String&gt; macList = new ArrayList&lt;String&gt;();\n    try {\n        Enumeration&lt;NetworkInterface&gt; netInterfaces = (Enumeration&lt;NetworkInterface&gt;) NetworkInterface\n                .getNetworkInterfaces();\n        while (netInterfaces.hasMoreElements()) {\n            ni = (NetworkInterface) netInterfaces.nextElement();\n            \/\/ ----------\u7279\u5b9a\u60c5\u51b5\uff0c\u53ef\u4ee5\u8003\u8651\u7528ni.getName\u5224\u65ad\n            \/\/ \u904d\u5386\u6240\u6709ip\n            Enumeration&lt;InetAddress&gt; ips = ni.getInetAddresses();\n            while (ips.hasMoreElements()) {\n                ip = (InetAddress) ips.nextElement();\n                if (!ip.isLoopbackAddress() \/\/ \u975e127.0.0.1\n                        &amp;&amp; ip.getHostAddress().matches(\"(\\\\d{1,3}\\\\.){3}\\\\d{1,3}\")) {\n                    macList.add(getMacFromBytes(ni.getHardwareAddress()));\n                }\n            }\n        }\n    } catch (Exception e) {\n        logger.error(\"\u83b7\u53d6mac\u9519\u8bef\", e);\n    }\n    if (macList.size() &gt; 0) {\n        return macList.get(0);\n    } else {\n        return \"\";\n    }\n\n}\n\nprivate static String getMacFromBytes(byte&#91;] bytes) {\n    StringBuffer mac = new StringBuffer();\n    byte currentByte;\n    boolean first = false;\n    for (byte b : bytes) {\n        if (first) {\n            mac.append(\"-\");\n        }\n        currentByte = (byte) ((b &amp; 240) &gt;&gt; 4);\n        mac.append(Integer.toHexString(currentByte));\n        currentByte = (byte) (b &amp; 15);\n        mac.append(Integer.toHexString(currentByte));\n        first = true;\n    }\n    return mac.toString().toUpperCase();\n}\n\n\/**\n * \u83b7\u53d6CPU\u5e8f\u5217\u53f7 Windows\n * \n * @return\n *\/\nprivate static String getCPUID_Windows() {\n    String result = \"\";\n    try {\n        File file = File.createTempFile(\"tmp\", \".vbs\");\n        file.deleteOnExit();\n        FileWriter fw = new java.io.FileWriter(file);\n        String vbs = \"Set objWMIService = GetObject(\\\"winmgmts:\\\\\\\\.\\\\root\\\\cimv2\\\")\\n\"\n                + \"Set colItems = objWMIService.ExecQuery _ \\n\" + \"   (\\\"Select * from Win32_Processor\\\") \\n\"\n                + \"For Each objItem in colItems \\n\" + \"    Wscript.Echo objItem.ProcessorId \\n\"\n                + \"    exit for  ' do the first cpu only! \\n\" + \"Next \\n\";\n\n        fw.write(vbs);\n        fw.close();\n        Process p = Runtime.getRuntime().exec(\"cscript \/\/NoLogo \" + file.getPath());\n        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));\n        String line;\n        while ((line = input.readLine()) != null) {\n            result += line;\n        }\n        input.close();\n        file.delete();\n    } catch (Exception e) {\n        logger.error(\"\u83b7\u53d6windows cpu\u4fe1\u606f\u9519\u8bef\", e);\n    }\n    return result.trim();\n}\n\n\/**\n * \u83b7\u53d6CPU\u5e8f\u5217\u53f7 linux\n * \n * @return\n *\/\nprivate static String getCPUID_linux() throws InterruptedException {\n    String result = \"\";\n    String CPU_ID_CMD = \"dmidecode\";\n    BufferedReader bufferedReader = null;\n    Process p = null;\n    try {\n        p = Runtime.getRuntime().exec(new String&#91;] { \"sh\", \"-c\", CPU_ID_CMD });\/\/ \u7ba1\u9053\n        bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));\n        String line = null;\n        int index = -1;\n        while ((line = bufferedReader.readLine()) != null) {\n            \/\/ \u5bfb\u627e\u6807\u793a\u5b57\u7b26\u4e32&#91;hwaddr]\n            index = line.toLowerCase().indexOf(\"uuid\");\n            if (index &gt;= 0) {\/\/ \u627e\u5230\u4e86\n                \/\/ \u53d6\u51famac\u5730\u5740\u5e76\u53bb\u96642\u8fb9\u7a7a\u683c\n                result = line.substring(index + \"uuid\".length() + 1).trim();\n                break;\n            }\n        }\n\n    } catch (IOException e) {\n        logger.error(\"\u83b7\u53d6liunx cpu\u4fe1\u606f\u9519\u8bef\", e);\n    }\n    return result.trim();\n}\n\/**\n * \u83b7\u53d6\u786c\u76d8\u5e8f\u5217\u53f7(\u8be5\u65b9\u6cd5\u83b7\u53d6\u7684\u662f \u76d8\u7b26\u7684\u903b\u8f91\u5e8f\u5217\u53f7,\u5e76\u4e0d\u662f\u786c\u76d8\u672c\u8eab\u7684\u5e8f\u5217\u53f7)\u786c\u76d8\u9a71\u52a8\u5668\u5206\u533a \u5982C,D\n * \u786c\u76d8\u5e8f\u5217\u53f7\u8fd8\u5728\u7814\u7a76\u4e2d\n * @param drive \u76d8\u7b26\n * @return\n *\/\nprivate static String getHardDiskSN_Windows(String drive) {\n    String result = \"\";\n    try {\n        File file = File.createTempFile(\"realhowto\", \".vbs\");\n        file.deleteOnExit();\n        FileWriter fw = new java.io.FileWriter(file);\n\n        String vbs = \"Set objFSO = CreateObject(\\\"Scripting.FileSystemObject\\\")\\n\"\n                + \"Set colDrives = objFSO.Drives\\n\"\n                + \"Set objDrive = colDrives.item(\\\"\"\n                + drive\n                + \"\\\")\\n\"\n                + \"Wscript.Echo objDrive.SerialNumber\"; \/\/ see note\n        fw.write(vbs);\n        fw.close();\n        String path = file.getPath().replace(\"%20\", \" \");\n        Process p = Runtime.getRuntime().exec(\n                \"cscript \/\/NoLogo \" + path);\n        BufferedReader input = new BufferedReader(new InputStreamReader(\n                p.getInputStream()));\n        String line;\n        while ((line = input.readLine()) != null) {\n            result += line;\n        }\n        input.close();\n    } catch (Exception e) {\n        e.printStackTrace();\n    }\n    return result.trim();\n}\nprivate static String getBiosSN_Windows() {\n    String result = \"\";\n    try {\n        Runtime rt = Runtime.getRuntime();\n        Process p = rt.exec(\"cmd.exe \/c wmic bios get serialnumber\");\n        InputStream in = p.getInputStream();\n        BufferedReader input = new BufferedReader(new InputStreamReader(\n                p.getInputStream()));\n        String line;\n        while ((line = input.readLine()) != null) {\n            result += line;\n        }\n        input.close();\n    } catch (Exception e) {\n        e.printStackTrace();\n        throw new RuntimeException();\n    }\n    return result.split(\"SerialNumber\")&#91;1].trim().toString();\n}\n\/***************************linux\u4e0b \u901a\u8fc7\u6267\u884cshell\u8bfb\u53d6 *********************************\/\n\/**\n * Java\u6267\u884cshell\u811a\u672c\u5165\u53e3\n * @param shellName \u811a\u672c\u6587\u4ef6\u540d\n * @throws Exception\n *\/\npublic static void service(String shellName) throws Exception{\n    String shellDir = \"\";\n    String shellPath = \"\";\n    try {\n        \/\/\u83b7\u53d6\u811a\u672c\u6240\u5728\u7684\u76ee\u5f55\n        String configFilePath = Thread.currentThread().getContextClassLoader().getResource(\"jdbc.properties\").getPath();\n        File f = new File(configFilePath);\n        shellDir = f.getParent().split(\"java\")&#91;0];\n        logger.info(\"shell dir = \" + shellDir);\n\n        \/\/\u62fc\u63a5\u5b8c\u6574\u7684\u811a\u672c\u76ee\u5f55\n        shellPath = shellDir + \"java\/solution\/Shell\/\" + shellName;\n        logger.info(\"shell path = \" + shellPath);\n\n        \/\/\u6267\u884c\u811a\u672c\n        callScript(shellPath);\n\n    } catch (Exception e) {\n        logger.error(\"ShellExcutor\u5f02\u5e38\" + e.getMessage(), e);\n        throw e;\n    }\n}\n\n\/**\n * \u811a\u672c\u6587\u4ef6\u5177\u4f53\u6267\u884c\u53ca\u811a\u672c\u6267\u884c\u8fc7\u7a0b\u63a2\u6d4b\n * @param script \u811a\u672c\u6587\u4ef6\u7edd\u5bf9\u8def\u5f84\n * @throws Exception\n *\/\nprivate static void callScript(String script) throws Exception{\n    try {\n        String cmd = \"sh \" + script;\n        try {\n            \/\/\u89e3\u51b3\u811a\u672c\u6ca1\u6709\u6267\u884c\u6743\u9650\n            ProcessBuilder builder = new ProcessBuilder(\"\/bin\/chmod\", \"755\",script);\n            Process chmodprocess = builder.start();\n            int w=chmodprocess.waitFor();\n            if(w!=0)\n            {\n                logger.error(\"------callScript \u5f00\u542f\u811a\u672c\u6743\u9650\u4e0d\u6210\u529f\uff01\");\n                BufferedReader erro_br = new BufferedReader(new InputStreamReader(chmodprocess.getErrorStream()));;\n                 String erroResult = \"\";\n                 String l=\"\";\n                 while((l = erro_br.readLine()) != null){\n                     erroResult+=l+\"\\n\";\n                  }\n                 if(erroResult.length()&gt;0)\n                     logger.error(\"-----callScript erro\"+erroResult);\n                 erro_br.close();\n            }\n            chmodprocess.destroy();\n        } catch (Exception e) {\n            \/\/ TODO: handle exception\n        }<\/code><\/pre>\n\n\n\n<p>\/\/ \/\/\u542f\u52a8\u72ec\u7acb\u7ebf\u7a0b\u7b49\u5f85process\u6267\u884c\u5b8c\u6210<br>\/\/ CommandWaitForThread commandThread = new CommandWaitForThread(cmd);<br>\/\/ commandThread.start();<br>\/\/<br>\/\/ while (!commandThread.isFinish()) {<br>\/\/ logger.info(&#8220;shell &#8221; + script + &#8221; \u8fd8\u672a\u6267\u884c\u5b8c\u6bd5,10s\u540e\u91cd\u65b0\u63a2\u6d4b&#8221;);<br>\/\/ Thread.sleep(10000);<br>\/\/ }<br>\/\/<br>\/\/ \/\/\u68c0\u67e5\u811a\u672c\u6267\u884c\u7ed3\u679c\u72b6\u6001\u7801<br>\/\/ if(commandThread.getExitValue() != 0){<br>\/\/ throw new Exception(&#8220;shell &#8221; + script + &#8220;\u6267\u884c\u5931\u8d25,exitValue = &#8221; + commandThread.getExitValue());<br>\/\/ }<br>\/\/ logger.info(&#8220;shell &#8221; + script + &#8220;\u6267\u884c\u6210\u529f,exitValue = &#8221; + commandThread.getExitValue());<br>logger.info(&#8220;&#8212;&#8212;callScript cmd job : &#8221; + cmd);<br>Scanner input = null;<br>Process process = null;<br>try {<br>\/\/\u6574\u4e2a\u547d\u4ee4\u4f5c\u4e3ash\u7684\u53c2\u6570\u8fdb\u884c\u6267\u884c\uff0c\u4ee5\u4fbf\u6267\u884c\u91cd\u5b9a\u5411\u548c\u7ba1\u9053\u547d\u4ee4\uff0c\u5426\u5219\u7ba1\u9053\u547d\u4ee4\u4f1a\u88ab\u5f53\u6210\u53c2\u6570\u6267\u884c\uff0c\u5f97\u5230\u9519\u8bef\u7ed3\u679c<br>\/\/process = Runtime.getRuntime().exec(new String[] { &#8220;\/bin\/sh&#8221;, &#8220;-c&#8221;, cmd });<br>process = Runtime.getRuntime().exec(cmd);<br>try {<br>\/\/\u7b49\u5f85\u547d\u4ee4\u6267\u884c\u5b8c\u6210<br>\/\/process.waitFor(10, TimeUnit.SECONDS)\uff1b<br>int waitfor = process.waitFor();<br>if(waitfor!=0)<br>{<br>logger.error(&#8220;&#8212;&#8212;callScript \u6267\u884c\u547d\u4ee4\u4e0d\u6210\u529f\uff01&#8221;);<br>BufferedReader erro_br = new BufferedReader(new InputStreamReader(process.getErrorStream()));;<br>String erroResult = &#8220;&#8221;;<br>String l=&#8221;&#8221;;<br>while((l = erro_br.readLine()) != null){<br>erroResult+=l+&#8221;\\n&#8221;;<br>}<br>if(erroResult.length()&gt;0)<br>logger.error(&#8220;&#8212;&#8211;callScript erro&#8221;+erroResult);<br>erro_br.close();<br>}<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>            } catch (InterruptedException e) {\n                e.printStackTrace();\n            }\n            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));\n            String line;\n            while ((line = br.readLine()) != null) {\n                listResult.add(line);\n            }\n\n            br.close();\n        } finally {\n            if (input != null) {\n                input.close();\n            }\n            if (process != null) {\n                process.destroy();\n            }\n        }\n    }\n    catch (Exception e){\n        throw new Exception(\"\u6267\u884c\u811a\u672c\u53d1\u751f\u5f02\u5e38,\u811a\u672c\u8def\u5f84\" + script, e);\n    }\n}\n\/**\n * \u811a\u672c\u51fd\u6570\u6267\u884c\u7ebf\u7a0b\n *\/\nprivate static class CommandWaitForThread extends Thread {\n\n    private String cmd;\n    private boolean finish = false;\n    private int exitValue = -1;\n\n    public CommandWaitForThread(String cmd) {\n        this.cmd = cmd;\n    }\n\n    public void run(){\n        try {\n            \/\/\u6267\u884c\u811a\u672c\u5e76\u7b49\u5f85\u811a\u672c\u6267\u884c\u5b8c\u6210\n            Process process = Runtime.getRuntime().exec(cmd);\n\n            \/\/\u5199\u51fa\u811a\u672c\u6267\u884c\u4e2d\u7684\u8fc7\u7a0b\u4fe1\u606f\n            BufferedReader infoInput = new BufferedReader(new InputStreamReader(process.getInputStream()));\n            BufferedReader errorInput = new BufferedReader(new InputStreamReader(process.getErrorStream()));\n            String line = \"\";\n            while ((line = infoInput.readLine()) != null) {\n                logger.info(line);\n            }\n            while ((line = errorInput.readLine()) != null) {\n                logger.error(line);\n            }\n            infoInput.close();\n            errorInput.close();\n\n            \/\/\u963b\u585e\u6267\u884c\u7ebf\u7a0b\u76f4\u81f3\u811a\u672c\u6267\u884c\u5b8c\u6210\u540e\u8fd4\u56de\n            this.exitValue = process.waitFor();\n        } catch (Throwable e) {\n            logger.error(\"CommandWaitForThread accure exception,shell \" + cmd, e);\n            exitValue = 110;\n        } finally {\n            finish = true;\n        }\n    }\n\n    public boolean isFinish() {\n        return finish;\n    }\n\n    public void setFinish(boolean finish) {\n        this.finish = finish;\n    }\n\n    public int getExitValue() {\n        return exitValue;\n    }\n}<\/code><\/pre>\n\n\n\n<p>\/**<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u901a\u8fc7\u786c\u4ef6\u540d\u83b7\u53d6\u786c\u4ef6\u4fe1\u606f<br>*\/<br>private static String getInfoByName(String name) {<br>String infoString=&#8221;&#8221;;<br>try {<br>if(listResult.size()==0)<br>service(&#8220;HardWareInfo.sh&#8221;);<br>for(String line:listResult)<br>{<br>if(line.contains(name))<br>{<br>String[] r= line.replace(name+&#8221;:&#8221;, &#8220;&#8221;).trim().split(&#8220;:&#8221;);<br>if(r.length&gt;1)<br>{<br>if(r.length==2)<br>return r[1];<br>else {<br>\/\/\u9488\u5bf9\u8fd9\u79cd\u60c5\u51b5 00:16:3e:0a:6d:70<br>String rString=&#8221;&#8221;;<br>for (int i = 0; i &lt;r.length; i++) {<br>rString+=&#8221;:&#8221;+r[i];<br>}<br>return rString.split(&#8220;:&#8221;,2)[1];<br>}<br>} <code>else return r[0]; }}} catch (Exception e) { \/\/ TODO: handle exception logger.error(\"------getInfoByName \"+name+\":\"+e.getMessage(),e); throw new RuntimeException(); } return infoString;<\/code> }<br>\/<em>linux\u4e0b \u901a\u8fc7\u547d\u4ee4\u8bfb\u53d6 <\/em>\/ private static String executeLinuxCmd(String cmd) throws IOException {<br>logger.info(&#8220;&#8212;&#8212;executeLinuxCmd got cmd job : &#8221; + cmd);<br>Scanner input = null;<br>String result = &#8220;&#8221;;<br>Process process = null;<br>try {<br>\/\/\u6574\u4e2a\u547d\u4ee4\u4f5c\u4e3ash\u7684\u53c2\u6570\u8fdb\u884c\u6267\u884c\uff0c\u4ee5\u4fbf\u6267\u884c\u91cd\u5b9a\u5411\u548c\u7ba1\u9053\u547d\u4ee4\uff0c\u5426\u5219\u7ba1\u9053\u547d\u4ee4\u4f1a\u88ab\u5f53\u6210\u53c2\u6570\u6267\u884c\uff0c\u5f97\u5230\u9519\u8bef\u7ed3\u679c<br>process = Runtime.getRuntime().exec(new String[] { &#8220;\/bin\/sh&#8221;, &#8220;-c&#8221;, cmd });<br>try {<br>\/\/\u7b49\u5f85\u547d\u4ee4\u6267\u884c\u5b8c\u6210<br>\/\/process.waitFor(10, TimeUnit.SECONDS)\uff1b<br>int waitfor = process.waitFor();<br>if(waitfor!=0)<br>logger.error(&#8220;&#8212;&#8212;executeLinuxCmd \u6267\u884c\u547d\u4ee4\u4e0d\u6210\u529f\uff01&#8221;);<br>} catch (InterruptedException e) {<br>e.printStackTrace();<br>}<br>\/\/ InputStream is = process.getInputStream();<br>\/\/ input = new Scanner(is);<br>\/\/ while (input.hasNextLine()) {<br>\/\/ result += input.nextLine() + &#8220;\\n&#8221;;<br>\/\/ }<br>BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));<br>String line;<br>while ((line = br.readLine()) != null) {<br>result += line;<br>break;<br>}<br>br = new BufferedReader(new InputStreamReader(process.getErrorStream()));;<br>String erroResult = &#8220;&#8221;;<br>while((line = br.readLine()) != null){<br>erroResult+=line+&#8221;\\n&#8221;;<br>}<br>if(erroResult.length()&gt;0)<br>logger.error(&#8220;&#8212;&#8211;executeLinuxCmd erro&#8221;+erroResult);<br>br.close();<br>\/\/result = cmd + &#8220;\\n&#8221; + result; \/\/\u52a0\u4e0a\u547d\u4ee4\u672c\u8eab\uff0c\u6253\u5370\u51fa\u6765<br>} finally {<br>if (input != null) {<br>input.close();<br>}<br>if (process != null) {<br>process.destroy();<br>}<br>}<br>return result; } \/**<ul><li>@param cmd \u547d\u4ee4\u8bed\u53e5<\/li><\/ul>\/<em><strong>\u6574\u5408<\/strong><\/em>\/<br>\/**<ul><li>\u83b7\u53d6CPU\u5e8f\u5217\u53f7<ul><li>@return<br>*\/<br>public static String getCPUID() {<br>logger.info(&#8220;&#8212;&#8212;\u5f53\u524d\u7cfb\u7edf\u7248\u672c&#8212;&#8211;\uff1a&#8221;+OSName);<br>try {<br>if (OSName!=null&amp;&amp;OSName.indexOf(&#8220;linux&#8221;)&gt;-1) { <code>\/\/return getCPUID_linux2(); return getInfoByName(\"cpuid\");<\/code> } else {<br>return getCPUID_Windows();<br>}<br>} catch (Exception e) {<br>\/\/ TODO Auto-generated catch block<br>e.printStackTrace();<br>throw new RuntimeException();<br>}<\/li><\/ul><\/li><\/ul>}<br>\/**<ul><li>\u83b7\u53d6\u4e3b\u677f\u5e8f\u5217\u53f7<ul><li>@return<br>*\/<br>public static String getMainBordId() {<br>try {<br>if (OSName!=null&amp;&amp;OSName.indexOf(&#8220;linux&#8221;)&gt;-1) { <code>\/\/return getMainBordId_linux2(); return getInfoByName(\"mainborid\");<\/code> } else {<br>return getMainBordId_windows();<br>}<br>} catch (Exception e) {<br>\/\/ TODO Auto-generated catch block<br>logger.error(&#8220;&#8212;&#8212;getMainBordId&#8212;&#8212;:&#8221;+e.getMessage());<br>throw new RuntimeException();<br>}<\/li><\/ul><\/li><\/ul>}<br>\/**<ul><li>linux \u786c\u76d8\u5e8f\u5217\u53f7<\/li><li>@return<br>*\/<br>public static String getHardDiskSN() {<br>try {<br>if (OSName!=null&amp;&amp;OSName.indexOf(&#8220;linux&#8221;)&gt;-1) { <code>\/\/return getHardDiskSN_Linux(); return getInfoByName(\"harddisksn\"); } else { return getHardDiskSN_Windows(\"C\"); } } catch (Exception e) { \/\/ TODO Auto-generated catch block logger.error(\"------getHardDiskSN------:\"+e.getMessage()); throw new RuntimeException(); }<\/code><\/li><\/ul>}<br>\/**<ul><li>\u83b7\u53d6bios\u5217\u53f7<\/li><li>@return<br>*\/<br>public static String getBiosSN() {<br>try {<br>if (OSName!=null&amp;&amp;OSName.indexOf(&#8220;linux&#8221;)&gt;-1) { <code>\/\/return getBiosVersion_Linux(); return getInfoByName(\"biossn\"); } else {<\/code> return getBiosSN_Windows();<br>}<br>} catch (Exception e) {<br>logger.error(&#8220;&#8212;&#8212;getBiosSN&#8212;&#8212;:&#8221;+e.getMessage());<br>throw new RuntimeException();<br>}<br>}<\/li><\/ul>\/\/\u786c\u76d8\u9a71\u52a8\uff1f\uff1f\uff1f\uff1f \/**<ul><li>\u83b7\u53d6widnows\u7f51\u5361\u7684mac\u5730\u5740.<br>*\/<br>public static String getMAC() {<br>try {<br>if (OSName!=null&amp;&amp;OSName.indexOf(&#8220;linux&#8221;)&gt;-1) { <code>\/\/return getMAC_linuxs(); return getInfoByName(\"mac\"); } else {<\/code> return getMAC_windows();<br>}<br>} catch (Exception e) {<br>logger.error(&#8220;&#8212;&#8212;getMAC&#8212;&#8212;:&#8221;+e.getMessage());<br>throw new RuntimeException();<br>}<br>}<\/li><\/ul><\/li><\/ul>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\u8f6c\u8f7d\u81ea\uff1ahttps:\/\/blog.csdn.net\/u011323200\/article\/details\/104313700<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u96c6\u5408\u4e86\u7f51\u4e0a\u7684Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f\u7684\u53ef\u7528\u4ee3\u7801\uff0cWindows\u4e0a\u4f7f\u7528\u811a\u672c\u53bb\u8bfb\u53d6\uff0clinux\u4e0a\u4f7f\u7528\u547d\u4ee4\u6216\u8005\u811a\u672c\u8bfb [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[89],"tags":[],"class_list":["post-872","post","type-post","status-publish","format-standard","hentry","category-89"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f - Dong&#039;s Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dongchangbin.net.cn\/?p=872\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f - Dong&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"\u96c6\u5408\u4e86\u7f51\u4e0a\u7684Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f\u7684\u53ef\u7528\u4ee3\u7801\uff0cWindows\u4e0a\u4f7f\u7528\u811a\u672c\u53bb\u8bfb\u53d6\uff0clinux\u4e0a\u4f7f\u7528\u547d\u4ee4\u6216\u8005\u811a\u672c\u8bfb [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dongchangbin.net.cn\/?p=872\" \/>\n<meta property=\"og:site_name\" content=\"Dong&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-27T06:55:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-27T06:55:23+00:00\" \/>\n<meta name=\"author\" content=\"Dong\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dong\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dongchangbin.net.cn\/?p=872#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dongchangbin.net.cn\/?p=872\"},\"author\":{\"name\":\"Dong\",\"@id\":\"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/1420649ce898d888fea55ef4fa6e8fae\"},\"headline\":\"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f\",\"datePublished\":\"2021-01-27T06:55:18+00:00\",\"dateModified\":\"2021-01-27T06:55:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dongchangbin.net.cn\/?p=872\"},\"wordCount\":585,\"publisher\":{\"@id\":\"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/1420649ce898d888fea55ef4fa6e8fae\"},\"articleSection\":[\"\u6280\u672f\"],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dongchangbin.net.cn\/?p=872\",\"url\":\"https:\/\/www.dongchangbin.net.cn\/?p=872\",\"name\":\"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f - Dong&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dongchangbin.net.cn\/#website\"},\"datePublished\":\"2021-01-27T06:55:18+00:00\",\"dateModified\":\"2021-01-27T06:55:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dongchangbin.net.cn\/?p=872#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dongchangbin.net.cn\/?p=872\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dongchangbin.net.cn\/?p=872#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.dongchangbin.net.cn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dongchangbin.net.cn\/#website\",\"url\":\"https:\/\/www.dongchangbin.net.cn\/\",\"name\":\"Dong&#039;s Blog\",\"description\":\"\u6162\u6162\u6765\uff0c\u6bd4\u8f83\u5feb\",\"publisher\":{\"@id\":\"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/1420649ce898d888fea55ef4fa6e8fae\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dongchangbin.net.cn\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/1420649ce898d888fea55ef4fa6e8fae\",\"name\":\"Dong\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3d0ac155d3e1aba6eca6a0a2bb3cdba1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3d0ac155d3e1aba6eca6a0a2bb3cdba1?s=96&d=mm&r=g\",\"caption\":\"Dong\"},\"logo\":{\"@id\":\"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/www.dongchangbin.net.cn\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f - Dong&#039;s Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dongchangbin.net.cn\/?p=872","og_locale":"zh_CN","og_type":"article","og_title":"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f - Dong&#039;s Blog","og_description":"\u96c6\u5408\u4e86\u7f51\u4e0a\u7684Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f\u7684\u53ef\u7528\u4ee3\u7801\uff0cWindows\u4e0a\u4f7f\u7528\u811a\u672c\u53bb\u8bfb\u53d6\uff0clinux\u4e0a\u4f7f\u7528\u547d\u4ee4\u6216\u8005\u811a\u672c\u8bfb [&hellip;]","og_url":"https:\/\/www.dongchangbin.net.cn\/?p=872","og_site_name":"Dong&#039;s Blog","article_published_time":"2021-01-27T06:55:18+00:00","article_modified_time":"2021-01-27T06:55:23+00:00","author":"Dong","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"Dong","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"8 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dongchangbin.net.cn\/?p=872#article","isPartOf":{"@id":"https:\/\/www.dongchangbin.net.cn\/?p=872"},"author":{"name":"Dong","@id":"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/1420649ce898d888fea55ef4fa6e8fae"},"headline":"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f","datePublished":"2021-01-27T06:55:18+00:00","dateModified":"2021-01-27T06:55:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dongchangbin.net.cn\/?p=872"},"wordCount":585,"publisher":{"@id":"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/1420649ce898d888fea55ef4fa6e8fae"},"articleSection":["\u6280\u672f"],"inLanguage":"zh-Hans"},{"@type":"WebPage","@id":"https:\/\/www.dongchangbin.net.cn\/?p=872","url":"https:\/\/www.dongchangbin.net.cn\/?p=872","name":"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f - Dong&#039;s Blog","isPartOf":{"@id":"https:\/\/www.dongchangbin.net.cn\/#website"},"datePublished":"2021-01-27T06:55:18+00:00","dateModified":"2021-01-27T06:55:23+00:00","breadcrumb":{"@id":"https:\/\/www.dongchangbin.net.cn\/?p=872#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dongchangbin.net.cn\/?p=872"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dongchangbin.net.cn\/?p=872#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.dongchangbin.net.cn\/"},{"@type":"ListItem","position":2,"name":"Java\u8bfb\u53d6\u7cfb\u7edf\u786c\u4ef6\u4fe1\u606f"}]},{"@type":"WebSite","@id":"https:\/\/www.dongchangbin.net.cn\/#website","url":"https:\/\/www.dongchangbin.net.cn\/","name":"Dong&#039;s Blog","description":"\u6162\u6162\u6765\uff0c\u6bd4\u8f83\u5feb","publisher":{"@id":"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/1420649ce898d888fea55ef4fa6e8fae"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dongchangbin.net.cn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":["Person","Organization"],"@id":"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/1420649ce898d888fea55ef4fa6e8fae","name":"Dong","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3d0ac155d3e1aba6eca6a0a2bb3cdba1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3d0ac155d3e1aba6eca6a0a2bb3cdba1?s=96&d=mm&r=g","caption":"Dong"},"logo":{"@id":"https:\/\/www.dongchangbin.net.cn\/#\/schema\/person\/image\/"},"url":"https:\/\/www.dongchangbin.net.cn\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=\/wp\/v2\/posts\/872"}],"collection":[{"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=872"}],"version-history":[{"count":1,"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=\/wp\/v2\/posts\/872\/revisions"}],"predecessor-version":[{"id":873,"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=\/wp\/v2\/posts\/872\/revisions\/873"}],"wp:attachment":[{"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dongchangbin.net.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}