本文共 4313 字,大约阅读时间需要 14 分钟。
利用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; } } }转载地址:http://pmpoi.baihongyu.com/