erlang如何获取本机MAC地址?

使用命令inet:getifaddrs().

详情见:http://erlang.org/doc/man/inet.html ,官方定义如下:

getifaddrs() -> {ok, Iflist} | {error, posix()}
Types
Iflist = [{Ifname, [Ifopt]}]
Ifname = string()
Ifopt = 
    {flags, [Flag]} |
    {addr, Addr} |
    {netmask, Netmask} |
    {broadaddr, Broadaddr} |
    {dstaddr, Dstaddr} |
    {hwaddr, Hwaddr}
Flag = 
    up | broadcast | loopback | pointtopoint | running | multicast
Addr = Netmask = Broadaddr = Dstaddr = ip_address()
Hwaddr = [byte()]
Returns a list of 2-tuples containing interface names and the interface addresses. Ifname is a Unicode string. Hwaddr is hardware dependent, for example, on Ethernet interfaces it is the 6-byte Ethernet address (MAC address (EUI-48 address)).


咱自己实践了一下,如下所示,hwaddr就是MAC地址:

[root@localhost ~]# erl
Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V8.3  (abort with ^G)
1> inet:getifaddrs().
{ok,[{"lo",
      [{flags,[up,loopback,running]},
       {hwaddr,[0,0,0,0,0,0]},
       {addr,{127,0,0,1}},
       {netmask,{255,0,0,0}},
       {addr,{0,0,0,0,0,0,0,1}},
       {netmask,{65535,65535,65535,65535,65535,65535,65535,
                 65535}}]},
     {"ens33",
      [{flags,[up,broadcast,running,multicast]},
       {hwaddr,[0,12,41,185,123,49]},
       {addr,{192,168,83,128}},
       {netmask,{255,255,255,0}},
       {broadaddr,{192,168,83,255}},
       {addr,{65152,0,0,0,8566,4963,38750,27671}},
       {netmask,{65535,65535,65535,65535,0,0,0,0}}]},
     {"virbr0",
      [{flags,[up,broadcast,running,multicast]},
       {hwaddr,[82,84,0,236,32,118]},
       {addr,{192,168,122,1}},
       {netmask,{255,255,255,0}},
       {broadaddr,{192,168,122,255}}]},
     {"virbr0-nic",
      [{flags,[broadcast,multicast]},
       {hwaddr,[82,84,0,236,32,118]}]}]}


猜你喜欢

转载自blog.csdn.net/libaineu2004/article/details/81002685
今日推荐