`
xiaoshao
  • 浏览: 50205 次
社区版块
存档分类
最新评论

java获取Mac地址

 
阅读更多

package com.shaozengwei.mac.ip;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class getMacIpAddr {

/**
* getMacAddress
*/

public static String callCmd(String[] cmd){
StringBuffer result = new StringBuffer();
String line = "";
try {
Process pro = Runtime.getRuntime().exec(cmd);
InputStreamReader input = new InputStreamReader(pro.getInputStream());
BufferedReader buffer = new BufferedReader(input);
while((line = buffer.readLine())!=null){
result.append(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result.toString();
}

public static String callCmd(String[] cmd,String[] another){
StringBuffer result = new StringBuffer();
String line;
try {
Runtime rt = Runtime.getRuntime();
Process pro = rt.exec(cmd);
pro.waitFor();
pro = rt.exec(another);
InputStreamReader ins = new InputStreamReader(pro.getInputStream());
BufferedReader bf = new BufferedReader(ins);
while((line = bf.readLine())!=null){
result.append(line);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result.toString();
}

/*
* @param ip target ip
* @param sourceString the result string of the command executed
* @param macSeparator
* @return mac address
*/
public static String filterMacAddress(String ip,String sourceString,String macSeparator){
StringBuffer result = new StringBuffer();
String regExp = "((([0-9,A-F,a-f]{1,2}"+macSeparator+"){1,5})[0-9,A-F,a-f]{1,2})";
Pattern parttern = Pattern.compile(regExp);
Matcher matcher = parttern.matcher(sourceString);
while(matcher.find()){
result = result.append(matcher.group(1));
if(sourceString.indexOf(ip) <= sourceString.lastIndexOf(ip)){
break;
}
}
return result.toString();
}

public static String getMaclnWindows(final String ip){
String result = "";
String[] cmd = {
"cmd",
"/c",
"ping " + ip
};
String[] another = {
"cmd",
"/c",
"arp -a"
};

String cmdResult = callCmd(cmd,another);

result =filterMacAddress(ip, cmdResult, "-");

return result;
}

public static String getMacLnLinux(final String ip){
String result = "";
String[] cmd = {
"/bin/sh",
"-c",
"ping " + ip + " -c 2 && arp -a"
};
String cmdResult = callCmd(cmd);
result = filterMacAddress(ip, cmdResult, ":");
return result;
}

public static String getMacAddress(String ip){
String macAddress = getMaclnWindows(ip).trim();
if(macAddress == null || "".equals(macAddress)){
macAddress = getMacLnLinux(ip);
}
return macAddress;
}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics