使用Cygwin获取Mac地址和主机名

时间:2011-09-01 10:17:29

标签: cygwin hostname mac-address

我需要编写一个脚本,在本地计算机上获取主机名和所有物理地址。它将在几台机器上运行。 经过一些研究,我发现我可以从$HOSTNAME变量中获取主机名,并且我还找到了getmac命令。 getmac的问题在于它返回所有mac地址(环回,逻辑等),而没有任何关于它使用的接口的线索。这是我的示例输出:

2C-27-D7-40-62-7A   \Device\Tcpip_{A04C5C9D-CD41-48D1-8EC8-54128C70835C}
32-9D-DE-C7-3F-6D   \Device\Tcpip_{EB38E492-9BEF-4F8F-98E6-C08716920461}
02-90-4C-4F-4F-50   \Device\Tcpip_{42DB7C91-BB9E-4BF4-B374-289F1BBA7AC6}

它给了我3个mac地址,其中只有一个是物理的,但是我没有看到决定哪一个的方法。你能帮我吗?

3 个答案:

答案 0 :(得分:3)

因为你提到了cygwin,'awk'会解决它...对于一般的Windows执行,即使AWK也可以单独下载GNU-Win32 utils。

当您执行“$ getmac -V -FO LIST”时,它会显示网络设备的名称,然后您可以获取所需的MAC地址,如下所示:

[以太网卡]

表示“本地连接”文字标记卡〜

$ getmac -V -FO CSV | awk -F ',' '{if(match($1,"Local Area Connection"))print $3;}'

[无线网卡]

用于“无线网络连接”文字标记卡〜

$ getmac -V -FO CSV | awk -F ',' '{if(match($1,"Wireless Network Connection"))print $3;}'

如果您有多个以太网/无线卡,名称可能会有所改变......您可以使用“$ getmac -V”检查实际名称,并根据需要进行匹配。

答案 1 :(得分:2)

只需解析ipconfig /all

的输出

我认为你只对连接到外部的“真正”适配器感兴趣。 根据同样存在的IP地址/默认网关信息,确定哪个是哪个应该相对简单。

请注意,从Windows到Windows版本,ipconfig输出略有不同。 如果你在“:”上分割线条,你就可以了。不要认为:始终出现在同一列中。

答案 2 :(得分:0)

您还可以解析ipconfig /all的输出,这是一个Windows实用程序,它将为您提供接口名称及其MAC地址。我不是100%确定哪些Windows平台支持此实用程序,但它确实存在于从NT到XP的系统中。

它确实从Cygwin bash shell执行。