#!/usr/bin/env bash # Outputs one of: # offline # wifi:% # eth: # Check ethernet first ETH=$(ip -o link show | awk '$9=="UP" && $2!="lo:" {print $2}' | grep -v "^wl" | head -1 | tr -d ':') if [[ -n "$ETH" ]]; then IP=$(ip -4 addr show "$ETH" 2>/dev/null | awk '/inet /{print $2}' | cut -d/ -f1 | head -1) if [[ -n "$IP" ]]; then echo "eth:${IP}" exit 0 fi fi # Check wifi WIFI=$(ip -o link show | awk '$9=="UP" && $2~/^wl/ {print $2}' | tr -d ':' | head -1) if [[ -n "$WIFI" ]]; then SIGNAL=$(awk "/${WIFI}/{print int(\$3*100/70)}" /proc/net/wireless 2>/dev/null | head -1) [[ -z "$SIGNAL" ]] && SIGNAL="?" echo "wifi:${SIGNAL}%" exit 0 fi echo "offline"