Every once in a while you need to get some basic network information from your Mac or a Mac you are supporting, this script below will help get you some helpful information.
#!/bin/sh clear sExternalMACALService="http://dns.kittell.net/macaltext.php?address=" # List all Network ports NetworkPorts=$(ifconfig -uv | grep '^[a-z0-9]' | awk -F : '{print $1}') #echo $NetworkPorts # Function to convert IP Subnet Mask to CIDR mask2cdr () { # Assumes there's no "255." after a non-255 byte in the mask local x=${1##*255.} set -- 0^^^128^192^224^240^248^252^254^ $(( (${#1} - ${#x})*2 )) ${x%%.*} x=${1%%$3*} echo $(( $2 + (${#x}/4) )) } # Get remote/public IP address remoteip=$(dig +short myip.opendns.com @resolver1.opendns.com) # Get computer name computername=$(scutil --get ComputerName) # Get serial number sSerialNumber=$(system_profiler SPHardwareDataType |grep "Serial Number (system)" |awk '{print $4}' | cut -d/ -f1) #echo $sSerialNumber # Get operating system name and version - Start OSvers1=$( sw_vers -productVersion | cut -d. -f1 ) OSvers2=$( sw_vers -productVersion | cut -d. -f2 ) OSvers3=$( sw_vers -productVersion | cut -d. -f3 ) case $OSvers2 in 8) OSName="Mountain Lion" ;; 9) OSName="Mavericks" ;; 10) OSName="Yosemite" ;; 11) OSName="El Capitan" ;; 12) OSName="Sierra" ;; default) OSName="Unknown" ;; esac # Get operating system name and version - Stop echo "$computername" echo "--------------" echo " Computer OS: Mac OS X - $OSName $OSvers1.$OSvers2.$OSvers3" echo " Computer Name: $computername" echo "Current User Name: $(whoami)" echo " Serial Number: $sSerialNumber" if [[ $remoteip ]]; then echo "Remote IP Address: $remoteip\n" else echo "Remote IP Address: Unable To Determine\n" fi for val in $(echo $NetworkPorts); do # Get for all available hardware ports their status activated=$(ifconfig -uv "$(echo $val)" | grep 'status: ' | awk '{print $2}') #echo $activated if [ "$activated" == "active" ]; then label=$(ifconfig -uv "$(echo $val)" | grep 'type' | awk '{print $2}') #echo $label #ActiveNetwork=$(route get default | grep interface | awk '{print $2}') ActiveNetworkName=$(networksetup -listallhardwareports | grep -B 1 "$label" | awk '/Hardware Port/{ print }'|cut -d " " -f3- | uniq) #echo $ActiveNetwork #echo $ActiveNetworkName state=$(ifconfig -uv "$val" | grep 'status: ' | awk '{print $2}') #echo $state ipaddress=$(ifconfig -uv "$val" | grep 'inet ' | awk '{print $2}') # echo $ipaddress if [[ -z $(ifconfig -uv "$val" | grep 'link rate: ' | awk '{print $3, $4}' | sed 'N;s/\n/ up /' ) ]]; then networkspeed="$(ifconfig -uv "$val" | grep 'link rate: ' | awk '{print $3}' ) up/down" else networkspeed="$(ifconfig -uv "$val" | grep 'link rate: ' | awk '{print $3, $4}' | sed 'N;s/\n/ up /' ) down" fi #echo $networkspeed macaddress=$(ifconfig -uv "$val" | grep 'ether ' | awk '{print $2}') #echo $macaddress macal=$(curl -s "$sExternalMACALService$macaddress") #echo $macal quality=$(ifconfig -uv "$val" | grep 'link quality:' | awk '{print $3, $4}') #echo $quality netmask=$(ipconfig getpacket "$val" | grep 'subnet_mask (ip):' | awk '{print $3}' | tr -d '[:space:]') #echo $netmask router=$(ipconfig getpacket "$val" | grep 'router (ip_mult):' | sed 's/.*router (ip_mult): {\([^}]*\)}.*/\1/') #echo $router DHCPActive=$(networksetup -getinfo "Wi-Fi" | grep DHCP) #echo $DHCPActive dnsserver=$(networksetup -getdnsservers "$ActiveNetworkName" | awk '{print $1, $2}' | sed 'N;s/\n//' ) #echo $dnsserver if [[ ! -z "$netmask" ]]; then echo "Network Port is Active" if [[ $ipaddress ]]; then echo "$ActiveNetworkName ($val)" echo "--------------" # Is this a WiFi associated port? If so, then we want the network name if [ "$label" = "Wi-Fi" ]; then WiFiName=$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | grep '\sSSID:' | sed 's/.*: //') #echo $WiFiName echo " Network Name: $WiFiName" fi echo " IP Address: $ipaddress" echo " Subnet Mask: $netmask" echo " Router: $router" echo " IP CIDR: $ipaddress/$(mask2cdr $netmask)" if [[ -z $dnsserver ]]; then if [[ $DHCPActive ]]; then echo " DNS Server: Set With DHCP" else echo " DNS Server: Unknown" fi else echo " DNS Server: $dnsserver" fi echo " MAC-address: $macaddress ($macal)" echo " Network Speed: $networkspeed" echo " Link quality: $quality" echo " " fi # Don't display the inactive ports. fi fi done
Last Updated on May 2, 2017