首页 > Java:开机获取Mac地址问题

Java:开机获取Mac地址问题

server.jar设置为开机自启动,启动时会执行getLinuxMac()方法获取本机Mac地址:

    private static String getLinuxMac() {
        StringBuffer sb = new StringBuffer();
        try {
            String str = "ifconfig | grep ether | sed -n 1p | awk -F' ' '{print $2}'";
            String[] cmd = new String[] { "/bin/sh", "-c", str };
            Process process = Runtime.getRuntime().exec(cmd);
            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
        } catch (IOException e) {
            Logx.error(e);
        }
        return sb.toString().replace(":", "-").toUpperCase();
    }

遇到的问题:
虽然server.jar能正常启动但getLinuxMac()获取到的Mac为空,必须重启这个server.jar才能获取到Mac,是不是Linux启动时还有什么东西没加载完使得上面的代码无法获取到Mac呢?


NetworkInterface 试试:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;

public class App{
    
   public static void main(String[] args){
        
    InetAddress ip;
    try {
            
        ip = InetAddress.getLocalHost();
        System.out.println("Current IP address : " + ip.getHostAddress());
        
        NetworkInterface network = NetworkInterface.getByInetAddress(ip);
            
        byte[] mac = network.getHardwareAddress();
            
        System.out.print("Current MAC address : ");
            
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < mac.length; i++) {
            sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));        
        }
        System.out.println(sb.toString());
            
    } catch (UnknownHostException e) {
        
        e.printStackTrace();
        
    } catch (SocketException e){
            
        e.printStackTrace();
            
    }
        
   }

}
【热门文章】
【热门文章】