Get MAC address without root
Of course you can grab the MAC addresses for your interfaces with “ifconfig -a” as root on Solaris 8. However if you want to get them as a regular user use arp.
Here is a script to do it for you:
#!/bin/ksh
# Quick script by rotten to report the MAC addresses on the server.
PATH=$PATH:/usr/sbin; export PATH
hostname=`hostname`
# We are only interested in devices that are configured on boot.
for nic in `ls /etc/hostname.*`
do
# Get the device name.
nicbit=`echo $nic | cut -d. -f2`
# This doesn’t work very well on IPMP hosts where there is all sorts
# of extra garbage in the hostname file:
#nichost=`cat /etc/hostname.$nicbit`
# So instead we glean the IP address for the interface from ifconfig:
nicip=`ifconfig $nicbit | grep inet | awk ‘{ print $2 }’`
# Then we grab the first hostname from /etc/hosts with that IP address.
# It had better be in /etc/hosts - local interfaces are usually there and
# not stashed off box in a name service…
nichost=`grep $nicip /etc/hosts | grep -v “^#” | head -1 | awk ‘{ print $2 }’`
# There seems to be the occaisional case where the IP is not in /etc/hosts,
# but set directly in /etc/hostname.xxx.
# In this case the arp table probably lists the interface by IP rather than
# hostname.
if [[ -z $nichost ]]
then
nichost=$nicip
fi
# This line is just to see if we are doing ok so far.
#printf “DEBUG –> nicbit=%s\tnicip=%s\tnichost=%s\n” $nicbit $nicip $nichost
# Now we snag the MAC address from the arp table.
macbit=`arp -a | grep $nichost | head -1 | awk ‘{ print $5 }’`
# And neatly format the results. The “….” are so that the columns line up
# without too much white space.
printf “%s\t%s\t…. %s \n” $hostname $nicbit $macbit
done
# Isn’t Solaris fun?






Add New Comment
Viewing 2 Comments
Thanks. Your comment is awaiting approval by a moderator.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Add New Comment