Here's a bash function for your bash profile that continuously prints some basic checks I usually do while diagnosing network issues:
- Show my LAN IPs
- Show the default gateway IP
- Ping the default gateway IP
- Ping 8.8.8.8 (Google's public DNS servers)
- DNS resolve amazon.com
- Ping amazon.com
- Get my WAN IP by curl'ing ifconfig.me
Tested on Ubuntu 20.04 and MacOS Catalina
function pingg() { while true; do printf "%s " $(TZ=UTC date "+%Y-%m-%dT%H:%M:%S") if [[ "$OSTYPE" == "darwin"* ]]; then lanIps=$(ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | paste -d, -s -) gw=$(netstat -rn -f inet | grep default | awk '{print $2}') else lanIps=$(ip addr | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | paste -d, -s -) gw=$(ip route | grep default | awk '{print $3}') fi printf "lanIp=%-15s " $lanIps printf "gw=%-15s " $gw pingGw="-------" if [ "$gw" != "" ]; then pingGw=$(ping -W1 -c1 $gw 2>/dev/null | tail -1 | grep -v "0 packets received" | cut -d '=' -f 2 | cut -d '/' -f 2) if [ "$pingGw" == "" ]; then pingGw="-------" fi fi printf "pGw=%-7s " $pingGw ping8888=$(ping -W1 -c1 8.8.8.8 2>/dev/null | tail -1 | grep -v "0 packets received" | cut -d '=' -f 2 | cut -d '/' -f 2) if [ "$ping8888" == "" ]; then ping8888="-------" fi printf "p8=%-7s " $ping8888 dnsAmzn=$(host -4 -W 1 -t a amazon.com | head -n1 | grep "has address" | awk '{print $4}') if [ "$dnsAmzn" == "" ]; then dnsAmzn="-------" fi printf "dnsAmz=%-15s " $dnsAmzn pingAmzn="-------" if [ "$dnsAmzn" != "-------" ]; then pingAmzn=$(ping -W1 -c1 $dnsAmzn 2>/dev/null | tail -1 | grep -v "0 packets received" | cut -d '=' -f 2 | cut -d '/' -f 2) if [ "$pingAmzn" == "" ]; then pingAmzn="-------" fi fi printf "pAmz=%-7s " $pingAmzn wanIp="-------" dnsIfconfigMe=$(host -4 -W 1 -t a ifconfig.me | head -n1 | grep "has address" | awk '{print $4}') if [ "$dnsIfconfigMe" != "" ]; then wanIp=$(curl -s --max-time 2 --connect-timeout 2 -H "Host: ifconfig.me" $dnsIfconfigMe | head -n 1 | awk '{print $1'}) if [ "$wanIp" == "" ]; then wanIp="-------" fi fi printf "wanIp=%-15s " $wanIp printf "\n" sleep 0.7 done }
Example output:
2020-07-13T23:43:59 lanIp=192.168.1.6/24 gw=192.168.1.1 pGw=0.264 p8=53.338 dnsAmz=176.32.98.166 pAmz=127.532 wanIp=1.2.3.4 2020-07-13T23:44:01 lanIp=192.168.1.6/24 gw=192.168.1.1 pGw=0.190 p8=47.107 dnsAmz=176.32.103.205 pAmz=111.309 wanIp=1.2.3.4 2020-07-13T23:44:02 lanIp=192.168.1.6/24 gw=192.168.1.1 pGw=0.290 p8=------- dnsAmz=176.32.103.205 pAmz=118.834 wanIp=1.2.3.4 2020-07-13T23:44:04 lanIp=192.168.1.6/24 gw=192.168.1.1 pGw=0.328 p8=143.387 dnsAmz=176.32.103.205 pAmz=135.333 wanIp=1.2.3.4 2020-07-13T23:44:06 lanIp=192.168.1.6/24 gw=192.168.1.1 pGw=0.313 p8=17.944 dnsAmz=176.32.103.205 pAmz=105.977 wanIp=1.2.3.4 2020-07-13T23:44:07 lanIp=192.168.1.6/24 gw=192.168.1.1 pGw=0.223 p8=22.505 dnsAmz=176.32.103.205 pAmz=97.623 wanIp=1.2.3.4 2020-07-13T23:44:08 lanIp=192.168.1.6/24 gw=192.168.1.1 pGw=0.250 p8=23.917 dnsAmz=176.32.103.205 pAmz=98.403 wanIp=1.2.3.4 2020-07-13T23:44:09 lanIp=192.168.1.6/24 gw=192.168.1.1 pGw=0.220 p8=41.262 dnsAmz=176.32.103.205 pAmz=100.828 wanIp=1.2.3.4