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