標籤:factory https 存在 set led lin work mis 網卡
擷取mac地址與cpu序號
參考部落格:https://www.jb51.net/article/94793.htm
另一篇參考地址沒記錄下來
package util;import java.io.BufferedReader;import java.io.File;import java.io.FileWriter;import java.io.InputStreamReader;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.net.UnknownHostException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Scanner;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @todo 擷取電腦配置資訊 * @author zhangyanan * @date 2018年8月6日 */public class CpuUtil { private static final Logger logger = LoggerFactory.getLogger(CpuUtil.class);/** * @todo 擷取電腦cpu序號 * @author zhangyanan * @date 2018年8月6日 */ public static String getCPUSerial() { String os = System.getProperty("os.name"); if (os.toLowerCase().startsWith("win")) { return CpuUtil.getWindowsCPUSerial(); } else { return CpuUtil.getLinuxCPUSerial(); } } /** * @todo windows擷取cpu序號 * @author zhangyanan * @date 2018年8月6日 */ public static String getWindowsCPUSerial() { String serial = null; try { Process process = Runtime.getRuntime().exec(new String[] { "wmic", "cpu", "get", "ProcessorId" }); process.getOutputStream().close(); Scanner sc = new Scanner(process.getInputStream()); sc.next(); serial = sc.next(); sc.close(); } catch (Exception e) { logger.error("getWindowsCPUSerial異常", e); } return serial; } /** * @todo linux擷取cpu序號 * @author zhangyanan * @date 2018年8月6日 */ public static String getLinuxCPUSerial() { 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\")\n" + "Set colItems = objWMIService.ExecQuery _ \n" + " (\"Select * from Win32_Processor\") \n" + "For Each objItem in colItems \n" + " Wscript.Echo objItem.ProcessorId \n" + " exit for ‘ do the first cpu only! \n" + "Next \n"; // + " exit for \r\n" + "Next"; fw.write(vbs); fw.close(); String path = file.getPath().replace("%20", " "); Process p = Runtime.getRuntime().exec("cscript //NoLogo " + path); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = input.readLine()) != null) { result += line; } input.close(); file.delete(); } catch (Exception e) { logger.error("getLinuxCPUSerial異常", e); } return result; } /** * @todo 擷取mac地址 * @author zhangyanan * @date 2018年8月6日 */ public static String getMACAddress() { InetAddress ia; try { ia = InetAddress.getLocalHost(); return getMACAddress(ia); } catch (UnknownHostException e) { logger.error("getMACAddress()異常", e); return null; } } /** * @todo 擷取mac地址 * @author zhangyanan * @date 2018年8月6日 */ public static String getMACAddress(InetAddress ia) { // 獲得網路介面對象(即網卡),並得到mac地址,mac地址存在於一個byte數組中。 try { byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress(); // 下面代碼是把mac地址拼裝成String StringBuffer sb = new StringBuffer(); for (int i = 0; i < mac.length; i++) { if (i != 0) { sb.append("-"); } // mac[i] & 0xFF 是為了把byte轉化為正整數 String s = Integer.toHexString(mac[i] & 0xFF); sb.append(s.length() == 1 ? 0 + s : s); } // 把字串所有小寫字母改為大寫成為正規的mac地址並返回 return sb.toString().toUpperCase(); } catch (SocketException e) { logger.error("getMACAddress異常!", e); return null; } }}
java擷取電腦部分資訊