Pegar o mac da placa

Como tive muitos problemas para encontrar algo que funcionasse para pegar o mac da placa tanto em windows e linux vou deixar aqui a solução
que me foi útil, aqui está um pouco do que eu achei na net e as alterações que eu fiz para poder funcionar, espero que seja útil para alguém.

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package license;

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

/**
*

  • @author jefersonsc
    */
    public class NetworkInfo {
    public static String getMacAddress() throws SocketException, UnknownHostException{

     String ip = InetAddress.getLocalHost().getHostAddress();
     String loopBack = ip.substring(0, 3);
     if(loopBack.equals("127")){
         ip = getFirstIP();
     }
     InetAddress localHost = InetAddress.getByName(ip);   
     NetworkInterface netInter = NetworkInterface.getByInetAddress(localHost);   
     byte[] macAddressBytes = netInter.getHardwareAddress();   
    
     String macAddress =  String.format ( "%1$02x-%2$02x-%3$02x-%4$02x-%5$02x-%6$02x",   
     macAddressBytes[0], macAddressBytes[1],   
     macAddressBytes[2], macAddressBytes[3],   
     macAddressBytes[4], macAddressBytes[5] ).toUpperCase();   
    
     return macAddress;   
    

}

 static private String getFirstIP( ) {
    java.util.Enumeration<java.net.NetworkInterface> ifaces = null;
   
    try {
        ifaces = java.net.NetworkInterface.getNetworkInterfaces();
    } catch (java.net.SocketException e) { }
   
    for (; ifaces.hasMoreElements();) {
        java.util.Enumeration<java.net.InetAddress> addrs = ifaces.nextElement().getInetAddresses();
       
        for (; addrs.hasMoreElements(); ) {
            java.net.InetAddress addr = addrs.nextElement();
            if (!addr.isLoopbackAddress() && !(addr instanceof java.net.Inet6Address))
                return addr.getHostName();
        }
       
    }
    return "127.0.0.1";
} 
/*
 * Main
 */
public final static void main(String[] args) {
    try {
        System.out.println("Network infos");

        System.out.println("  Operating System: " + System.getProperty("os.name"));
        System.out.println("  IP/Localhost: " + InetAddress.getLocalHost().getHostAddress());
        System.out.println("  MAC Address: " + getMacAddress());
    } catch(Throwable t) {
        t.printStackTrace();
    }
}

}//By Jeferson Chanan
[/code]

muito bom

[quote=j_chanan]Como tive muitos problemas para encontrar algo que funcionasse para pegar o mac da placa tanto em windows e linux vou deixar aqui a solução
que me foi útil, aqui está um pouco do que eu achei na net e as alterações que eu fiz para poder funcionar, espero que seja útil para alguém.[/quote]

ahmmm ta…
pois eh tem um post parecido…
http://www.guj.com.br/posts/list/83460.java

[quote]RobsonFagundes
“ahmmm ta…
pois eh tem um post parecido…
http://www.guj.com.br/posts/list/83460.java”[/quote]

Bom se vc testar a classe que esta postada verá que dependendo da configuração do linux ele vai pegar o endereço de loopBack e não vai obter o mac da placa
já tinha visto aquele post e feito os testes

O JUG faz isso há alguns anos :))