Como obtener la MacAddress en Erlang
Para que podamos obtener la MacAddress desde Erlang, utilizaremos el módulo Inet, que nos provee acceso a los protocolos de TCP/IP. Pero la parte que vamos a manejar no esta documentada ni soportada, por lo que no les puedo asegurar que funcione en todos los sistemas. Por lo menos en Linux funciona.
Para obtener las interfaces utilizamos :
1> inet:getiflist(). {ok,["lo","eth0"]}
Con ifget obtenemos la información de la interfaz que necesitamos como por ejemplo. :
[addr, broadaddr, dstaddr, mtu, netmask, flags, hwaddr]
2> inet:ifget("eth0", [addr, broadaddr, dstaddr, mtu, netmask, flags, hwaddr]). {ok,[{addr,{10,10,10,53}}, {broadaddr,{10,10,10,255}}, {dstaddr,{10,10,10,53}}, {mtu,1500}, {netmask,{255,255,255,0}}, {flags,[up,broadcast,running,multicast]}, {hwaddr,[0,64,203,94,69,179]}]}
Si podemos observar, el hwaddr no esta convertido en hexadecimal, por lo que tenemos que hacer la conversión utilizando el módulo de io_lib, y hacemos un lists:flatten para unirlos.
1> io_lib:format("~.16B~.16B~.16B~.16B~.16B~.16B", [0,64,203,94,69,179]). ["0","40","CB","5E","45","B3"] 2> lists:flatten(["0","40","CB","5E","45","B3"]). "040CB5E45B3"
Con esto podemos obtener la MacAddres, de la máquina que estemos utilizando.
No related posts.
1 comentario
Other Links to this Post
RSS feed para los comentarios de esta entrada. TrackBack URI
By Manuel Rubio, 17 marzo, 2010 @ 16:07
muy potente, sí, señor, ¡sí, señor!
[Reply]