Java获得CPU序列号和网卡Mac地址

    技术2022-05-11  35

    利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(String)接口,要用 Runtime.getRuntime().exec(String[])这个接口,不然复杂命令的执行会有问题。例子如下(拿cpu个数,其他类似): 定义命令: WindowsCmd ="cmd.exe /c echo %NUMBER_OF_PROCESSORS%";//windows的特殊 SolarisCmd = {"/bin/sh", "-c", "/usr/sbin/psrinfo | wc -l"}; AIXCmd = {"/bin/sh", "-c", "/usr/sbin/lsdev -Cc processor | wc -l"}; HPUXCmd = {"/bin/sh", "-c", "echo /"map/" | /usr/sbin/cstm | grep CPU | wc -l "}; LinuxCmd = {"/bin/sh", "-c", "cat /proc/cpuinfo | grep ^process | wc -l"}; 然后判断系统: os = System.getProperty("os.name").toLowerCase(); 根据不同的操作系统call不同的命令。 */ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; public class GetMACAddress {     public String getMACAddress(String ipAddress)     {         String str = "",strMAC = "",macAddress = "";         try         {             Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);             InputStreamReader ir = new InputStreamReader(pp.getInputStream());             LineNumberReader input = new LineNumberReader(ir);             for(int i = 1;i < 100;i++)             {                 str = input.readLine();                 if(str != null)                 {                     if(str.indexOf("MAC Address") > 1)                     {                         strMAC = str.substring(str.indexOf("MAC Address") + 14,str.length());                         break;                     }                 }             }         }         catch(IOException ex)         {             return "Can't Get MAC Address!";         }         //         if(strMAC.length() < 17)         {             return "Error!";         }         macAddress = strMAC.substring(0,2) + ":"             + strMAC.substring(3,5) + ":"             + strMAC.substring(6,8) + ":"             + strMAC.substring(9,11) + ":"             + strMAC.substring(12,14) + ":"             + strMAC.substring(15,17);         //         return macAddress;     }     public static void main(String[] args)     {         GetMACAddress getMACAddress = new GetMACAddress();         System.out.println(getMACAddress.getMACAddress("172.18.8.225"));         try         {             java.lang.Process proc = Runtime.getRuntime().exec("ipconfig /all");             InputStream istr = proc.getInputStream();             byte[] data = new byte[1024];             istr.read(data);             String netdata = new String(data);             System.out.println("Your Mac Address=" + procAll(netdata));         }         catch(IOException e)         {             System.out.println("error=" + e);         }     }     public static String procAll(String str)     {         return procStringEnd(procFirstMac(procAddress(str)));     }     public static String procAddress(String str)     {         int indexof = str.indexOf("Physical Address");         if(indexof > 0)         {             return str.substring(indexof,str.length());         }         return str;     }     public static String procFirstMac(String str)     {         int indexof = str.indexOf(":");         if(indexof > 0)         {             return str.substring(indexof + 1,str.length()).trim();         }         return str;     }     public static String procStringEnd(String str)     {         int indexof = str.indexOf("/r");         if(indexof > 0)         {             return str.substring(0,indexof).trim();         }         return str;     } } import java.util.Vector; class GetNetMAC {     //网卡物理地址长度     static private final int _physicalLength = 16;     public static void main(String[] args)     {         //output you computer phycail ip address         System.out.println("The MAC Addressis:/t" + getPhysicalAddress());     }     static public String getPhysicalAddress()     {         GetNetMACShell shell = new GetNetMACShell();         String cmd = "cmd.exe /c ipconfig/all";         Vector result;         result = shell.execute(cmd);         return parseCmd(result.toString());     }     //从字符串中解析出所需要获得的字符串     static private String parseCmd(String s)     {         String find = "Physical Address. . . . . . . . . :";         int findIndex = s.indexOf(find);         if(findIndex == -1)         {             return "not find";         }         else         {             return s.substring(findIndex + find.length() + 1,findIndex + find.length() + 1 + _physicalLength);         }     } } import java.io.BufferedReader; import java.io.DataInputStream; import java.io.InputStreamReader; import java.util.Vector; public class GetNetMACShell {     private Process process = null;     public Vector execute(String shellCommand)     {         try         {             Start(shellCommand);             Vector vResult = new Vector();             DataInputStream in = new DataInputStream(process.getInputStream());             BufferedReader reader = new BufferedReader(new InputStreamReader(in));             String line;             do             {                 line = reader.readLine();                 if(line == null)                 {                     break;                 }                 else                 {                     vResult.addElement(line);                 }             }             while(true);             reader.close();             return vResult;         }         catch(Exception e)         {             //error             return null;         }     }     public void Start(String shellCommand)     {         try         {             if(process != null)             {                 kill();             }             Runtime sys = Runtime.getRuntime();             process = sys.exec(shellCommand);         }         catch(Exception e)         {             System.out.println(e.toString());         }     }     public void kill()     {         if(process != null)         {             process.destroy();             process = null;         }     } }


    最新回复(0)