theShingles
theShingles

Reputation: 365

How to Grab MAC Address of Active Ethernet Connection in Bash Script?

Simple Question:

How do I grab the MAC address of the active Ethernet connection in a bash script?

I currently have:

set - `/sbin/ifconfig eth0 | head -1`
MAC=$5

Which outputs the MAC address of the eth0, but if it's eth1 that's active, I want that instead.

Could I beforehand execute ifconfig | grep inet but that wouldn't tell me which interface is active, just that one is active. I need to grab the line above it to tell me which one is the active connection.

Any help would be much appreciated.

Thank you!

Upvotes: 4

Views: 4543

Answers (2)

kSiR
kSiR

Reputation: 764

you could do something like this

ifconfig | awk '/eth/ { print $5 }'

also an option... depending on user may need to specify /sbin/ifconfig in the xargs

route | awk '/default/ { print $NF }' | xargs -I {} ifconfig {} | awk '/HWaddr/ { print $5 }'

Upvotes: 1

theShingles
theShingles

Reputation: 365

Found the answer:

set - `ifconfig | grep -B 1 inet | head -1`
MAC=$5

I grep'd the inet string and returned the line before. Then use head to grab the first line.

Upvotes: 2

Related Questions