Last active
March 14, 2023 23:50
-
-
Save jfeilbach/a88510aef0b62c45c0c57a7c58c4e055 to your computer and use it in GitHub Desktop.
getinfo.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 $NetworkPorts; do # Get for all available hardware ports their status | |
activated=$(ifconfig -uv "$val" | grep 'status: ' | awk '{print $2}') | |
#echo $activated | |
label=$(ifconfig -uv "$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}') | |
#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 [ "$activated" = 'active' ]; 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 | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment