Java supports cross-platform access to cpuid, motherboard id, hard disk id, mac address (compatible with windows, Linux) (transfer)

http://blog.csdn.net/flyingcloude/article/details/9417825

 

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\")\n"
                     "Set colItems = objWMIService.ExecQuery _ \n"
                     "   (\"Select * from Win32_BaseBoard\") \n"
                     "For Each objItem in colItems \n"
                     "    Wscript.Echo objItem.SerialNumber \n"
                     "    exit for  ' do the first cpu only! \n"  "Next \n" ;
 
             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\")\n"
                     "Set colDrives = objFSO.Drives\n"
                     "Set objDrive = colDrives.item(\""
                     + drive
                     "\")\n"
                     "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\")\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();
             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

Order:

0. View CPUID: dmidecode -t processor | grep 'ID'

1. Check the server model:dmidecode | grep 'Product Name'

2. Check the serial number of the motherboard:dmidecode |grep 'Serial Number'

3. Check the system serial number:dmidecode -s system-serial-number

4. View memory information:dmidecode -t memory

5. View OEM information:dmidecode -t 11

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326939138&siteId=291194637