27 lines
698 B
Bash
27 lines
698 B
Bash
#!/usr/bin/env bash
|
|
# Outputs one of:
|
|
# offline
|
|
# wifi:<signal>%
|
|
# eth:<ip>
|
|
|
|
# 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"
|