logansdotfiles/.config/fastfetch/nic.sh

58 lines
1.3 KiB
Bash
Raw Normal View History

#!/bin/bash
set -e
# Get the default route
default_route=$(ip route | grep default)
# Extract the NIC interface name
nic=$(echo $default_route | awk '{print $5}')
# Get current link speed of interface
link_speed=$(ethtool $nic 2>/dev/null | grep "Speed:" | awk '{print $2}')
# Get the PCI ID for the NIC interface
pci_id=$(ethtool -i $nic 2>/dev/null | grep bus-info | awk '{print $2}')
# Extract speed and unit
speed_value=$(echo $link_speed | sed 's/[A-Za-z\/]*//g')
speed_unit=$(echo $link_speed | sed 's/[0-9]*//g')
# Convert speed to a human-readable format
case $speed_unit in
"Mb/s")
if [ $speed_value -ge 1000 ]; then
speed_value=$(bc <<< "scale=1; $speed_value/1000")
speed_unit="Gb/s"
fi
;;
"Gb/s")
# If you need to handle more units, you can extend here
;;
*)
#echo "Unknown speed unit: $speed_unit"
speed_value=""
speed_unit=""
;;
esac
# Check if PCI ID is found
if [ -z "$pci_id" ]; then
#echo "PCI ID not found for interface: $nic"
exit 1
else
# Get the human-readable name of the device
device_name=$(lspci -s $pci_id | cut -d ' ' -f 4-)
fi
# Hee Hoo jank :)
if [[ ! -z $speed_value && ! -z $speed_unit ]]; then
speed_value="[${speed_value}"
speed_unit="${speed_unit}]"
else
speed_value=""
speed_unit=""
fi
echo "$device_name" "${speed_value} ${speed_unit}"