73 lines
1.5 KiB
Bash
Executable file
73 lines
1.5 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
## Wizard Kit: HW Diagnostics - Network
|
|
|
|
function test_connection() {
|
|
cmd="a"
|
|
if [[ -e "/sys/class/net/$1" ]]; then
|
|
cmd="a show $1"
|
|
fi
|
|
if ip $cmd | grep -Eq '(10.[0-9]+|172.(1[6-9]|2[0-9]|3[0-1]).[0-9]+|192.168).[0-9]+.[0-9]+'; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
|
|
CLEAR="\e[0m"
|
|
RED="\e[31m"
|
|
GREEN="\e[32m"
|
|
YELLOW="\e[33m"
|
|
BLUE="\e[34m"
|
|
|
|
# Header
|
|
echo "WK HW Diagnostics - Network"
|
|
echo ""
|
|
|
|
# Start Wifi if necessary
|
|
echo "Initializing..."
|
|
connect-to-network >/dev/null 2>&1
|
|
|
|
# Check network connection
|
|
echo -n "Network connection: "
|
|
if test_connection; then
|
|
echo -e "${GREEN}OK${CLEAR}"
|
|
else
|
|
echo -e "${RED}No access${CLEAR}"
|
|
exit 1
|
|
fi
|
|
|
|
# Check IP addresses
|
|
for d in /sys/class/net/*; do
|
|
device="$(basename $d)"
|
|
if [ "$device" != "lo" ]; then
|
|
if test_connection $device; then
|
|
ip="$(ip a show $device | egrep 'inet [0-9]' | sed -r 's#.*inet (.*?/[0-9]+).*#\1#')"
|
|
echo "$device: $ip" | awk '{printf " %-16s %s\n", $1, $2}'
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# Check internet connection
|
|
echo -n "Internet connection: "
|
|
if ping -c 2 -q 8.8.8.8 >/dev/null 2>&1; then
|
|
echo -e "${GREEN}OK${CLEAR}"
|
|
else
|
|
echo -e "${RED}No access${CLEAR}"
|
|
exit 1
|
|
fi
|
|
|
|
# Check DNS
|
|
echo -n "DNS Resolution: "
|
|
if ping -c 2 -q google.com >/dev/null 2>&1; then
|
|
echo -e "${GREEN}OK${CLEAR}"
|
|
else
|
|
echo -e "${RED}Unable to resolve google.com${CLEAR}"
|
|
exit 1
|
|
fi
|
|
|
|
# Check speed
|
|
echo "Speedtest:"
|
|
speedtest-cli --simple | awk '{printf " %-16s %6.2f %s\n", $1, $2, $3}'
|
|
|