如何通过MatLab获取MAC地址?

smtd7mpg  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(534)

我将使用MATLAB设计一个防火墙,我需要获得IP、端口和MAC地址等以太网数据来编写我的过滤规则。
我怎样才能获得这些呢?

nukf8bse

nukf8bse1#

由于您的问题最初有macos标记(在问题被编辑之前),下面是一个更通用的错误检查解决方案,应该可以在Windows、MacOS和其他UNIX/Linux系统上使用:

if ispc
    [status,result] = dos('getmac');
    if status == 0
        mac = result(160:176);
    else
        error('Unable to obtain MAC address.\n%s',result)
    end
elseif isunix
    [status,result] = system('ifconfig en0 | awk ''/ether/ {print $2}''');
    if status == 0
        mac = result(1:end-1); %remove trailing carriage return
    else
        error('Unable to obtain MAC address.\n%s',result);
    end
else
    error('Platform not recognized. Unable to obtain MAC address.');
end

对于基于Unix的系统(包括MacOS),system函数用于调用终端中的ifconfigawk命令。
请注意,对于Windows和UNIX,此解决方案都会返回en0上主以太网接口的MAC地址。在某些系统上,可能需要将其更改为en1或另一个接口ID,具体取决于ifconfig返回的内容。您还可以通过system使用ifconfig在UNIX系统上获取IP地址、端口号等。

eblbsuwk

eblbsuwk2#

MathWorks员工回答了on MATLAB answers
使用此命令的输出,您可以解析结果字符串输出以获得MAC地址。例如:

[status,result] = dos('getmac');
mac = result(160:176);

相关问题