The following code will give you network specific information about your server/computer.
Red Hat/CentOS/Fedora along with Debian/Ubuntu and Mac OS X options below.
At some point if I have a need (more than one adapter) on a Red Hat or Debian server/computer I may build it out like the Mac OS X version.
declare OSVer=$(cat /etc/redhat-release) declare netAdapter=$(nmcli device status | grep en | cut -d " " -f1) if [ -z "$netAdapter" ]; then netAdapter=$(nmcli device status | grep eth | cut -d " " -f1) fi declare netIP=$(/sbin/ip -o -4 addr list $netAdapter | awk '{print $4}' | cut -d/ -f1) #declare netCIDR=$(/sbin/ip -o -4 addr list $netAdapter | cut -d ' ' -f7) declare netMask=$(ipcalc -m $netIP | cut -d '=' -f2) declare netCIDR=$(ipcalc -p $netIP $netMask | cut -d '=' -f2) declare netWork=$(ipcalc -n $netIP $netMask | cut -d '=' -f2) declare banner=$(cat <<EOF $OSVer Hostname: $(hostname) Network Information Adapter: $netAdapter IP: $netIP Netmask: $netMask CIDR: $netWork/$netCIDR EOF ) echo "$banner"
# Install IPCalc sudo apt-get install ipcalc # Install Network Manager (nmcli) sudo apt-get install network-manager #lsb_release -a OS=$(lsb_release -i | cut -d ":" -f2 | tr -d '[:space:]') OSCode=$(lsb_release -c | cut -d ":" -f2 | tr -d '[:space:]') OSVer=$(lsb_release -r | cut -d ":" -f2 | tr -d '[:space:]') #echo "$OS $OSCode $OSVer" # Network Variables - Start declare netAdapter=$(nmcli device status | grep en | cut -d " " -f1) if [ -z "$netAdapter" ]; then netAdapter=$(nmcli device status | grep eth | cut -d " " -f1) fi #declare netAdapter=$(ip -o link show | awk '{print $2,$9}' | grep UP | cut -d ":" -f1) #echo $netAdapter declare netIP=$(/sbin/ip -o -4 addr list $netAdapter | awk '{print $4}' | cut -d/ -f1) #echo $netIP #declare netMask=$(ipcalc -m $netIP | cut -d '=' -f2) declare netMask=$(ifconfig "$netAdapter" | sed -rn '2s/ .*:(.*)$/\1/p') declare netCIDR=$(ipcalc $netIP/$netMask | grep "Netmask:" | cut -d "=" -f2 | cut -d " " -f2 | tr -d '[:space:]') declare netWork=$(ipcalc $netIP/$netMask | grep "Network:" | cut -d "/" -f1 | cut -d " " -f4 | tr -d '[:space:]') declare banner=$(cat <<EOF $OS $OSCode $OSVer Hostname: $(hostname) Network Information Adapter: $netAdapter IP: $netIP Netmask: $netMask CIDR: $netWork/$netCIDR EOF ) echo "$banner"
# Get IP - Start sExternalMACALService="http://dns.kittell.net/macaltext.php?address=" # 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) )) } # List all Network ports NetworkPorts=$(ifconfig -uv | grep '^[a-z0-9]' | awk -F : '{print $1}') #echo $NetworkPorts rm -rf ~/NetworkInfo.txt 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 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)" >> ~/NetworkInfo.txt echo "--------------" >> ~/NetworkInfo.txt # 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" >> ~/NetworkInfo.txt fi echo " IP Address: $ipaddress" >> ~/NetworkInfo.txt echo " Subnet Mask: $netmask" >> ~/NetworkInfo.txt echo " Router: $router" >> ~/NetworkInfo.txt echo " IP CIDR: $ipaddress/$(mask2cdr $netmask)" >> ~/NetworkInfo.txt if [[ -z $dnsserver ]]; then if [[ $DHCPActive ]]; then echo " DNS Server: Set With DHCP" >> ~/NetworkInfo.txt else echo " DNS Server: Unknown" >> ~/NetworkInfo.txt fi else echo " DNS Server: $dnsserver" >> ~/NetworkInfo.txt fi echo " MAC-address: $macaddress ($macal)" >> ~/NetworkInfo.txt #echo " Network Speed: $networkspeed" >> ~/NetworkInfo.txt #echo " Link quality: $quality" >> ~/NetworkInfo.txt echo " " >> ~/NetworkInfo.txt fi # Don't display the inactive ports. fi done cat ~/NetworkInfo.txt # Get IP - Stop