MATLAB Answers

0

how to separate mac address on windows...?

Asked by Kelvin Viroja on 5 Sep 2016
Latest activity Answered by Xiangrui Li on 1 May 2017
system ('getmac'); When i run this command it return 3 mac address... Is it Possible to separate this all 3 mac address or fatch any one of them ?

  0 Comments

Sign in to comment.

Tags

1 Answer

Answer by Xiangrui Li on 1 May 2017

For Windows:
[~, a] = system ('getmac');
mac = regexp(a, '([0-9A-F]{2}-){5}[0-9A-F]{2}', 'match', 'once'); % get first one in string
mac = regexp(a, '([0-9A-F]{2}-){5}[0-9A-F]{2}', 'match'); % get all in cellstr
For OSX and Linux, it is a slightly different:
[~, a] = system ('ifconfig');
mac = regexp(a, '([0-9a-f]{2}:){5}[0-9a-f]{2}', 'match', 'once'); % get first one in string
mac = regexp(a, '([0-9a-f]{2}:){5}[0-9a-f]{2}', 'match'); % get all in cellstr
If java is available, it is faster than system command, and the solution is OS-independent:
ni = java.net.NetworkInterface.getNetworkInterfaces;
while ni.hasMoreElements
m = ni.nextElement.getHardwareAddress;
if numel(m)==6 && ~all(m==0) % accept it if length==6 and not all zeros
mac = typecast(m, 'uint8'); % uint8 format
mac = sprintf('%02X-%02X-%02X-%02X-%02X-%02X', mac); % Windows hex format
% mac = sprintf('%02x:%02x:%02x:%02x:%02x:%02x', mac); % unix hex format
break; % stop after finding first one, likely ethernet adaptor
end
end

  0 Comments

Sign in to comment.