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
No comments:
Post a Comment