Bash脚本显示Mac机场MAC地址

时间:2011-11-01 22:49:18

标签: macos bash scripting freebsd

我不擅长编写脚本,但发现这个网站,所以希望有些人可以帮助我:)

我需要一个bash脚本来显示机器的机场Mac地址,我认为该命令是..

ifconfig en1 

..在终端中显示正确的结果,但我不知道如何利用它。

我在办公环境中使用Casper Suite,需要获取显示无线(机场)端口MAC地址的报告。

向您展示Casper如何在这里工作的脚本是有人写的,以检查机器是否有机场卡

#!/bin/sh

checkHasAnAirportCard=`networksetup -listallhardwareports | grep "Hardware Port: Air" | cut -c 16-`

if [ -z "$checkHasAnAirportCard" ]; then
    echo "<result>No</result>"
else
    echo "<result>Yes</result>"
fi

感谢您的帮助&amp;建议

2 个答案:

答案 0 :(得分:4)

你可以这样做:

#!/bin/sh

networksetup -listallhardwareports | egrep -A 2 "(AirPort|Wi-Fi)" | grep Ethernet

将其放入一个名为eg的文本文件中airport.sh,将其设为可执行文件(chmod +x airport.sh)并运行它:

$ ./airport.sh 
Ethernet Address: 58:b0:35:65:7a:02

如果你只想要自己的MAC地址(没有“以太网地址:”前缀),那么将脚本更改为:

#!/bin/sh

networksetup -listallhardwareports | egrep -A 2 "(AirPort|Wi-Fi)" | grep Ethernet | cut -f 3- -d ' '

然后应该给出例如:

$ ./airport.sh 
58:b0:35:65:7a:02

答案 1 :(得分:0)

这样的事可能对你有用(脚本的内容是ifconfig en1 | egrep -o "([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}"):

#!/bin/sh

IFACE=en1 ##Put your interface here if it isn't en1

MACADDRESS=`ifconfig ${IFACE} | egrep -o "([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}"`

if [ -n "$MACADDRESS" ]; then
    # Found a mac address, print it out
    echo "$MACADDRESS"
else  
    # No mac found, do something else
fi

输出mac地址:

[ 16:15 Jonathan@MacBookPro ~ ]$ ./macMac.sh 
62:c5:4a:8c:c2:74

如果-n为空,则$MACADDRESS测试 egrep -o搜索特定的正则表达式,仅返回匹配项,而不是整行。