Bash Script to Check Internet Uptime

You want to check your internet connectivity. You need something to test your connection that day as you are having issues. I found a nice bash script to check internet uptime and tweaked it for us all to use with ease.

Sometimes you need to keep track of internet access. Just because you are a geek and would like to know or because you were having issues with your hoster like me and want to test.

Bash Script

I found an interesting script you can run on your Mac by executing a bash script. I adjusted it some. Here is my current version

#!/bin/bash

INTERNET_STATUS="UNKNOWN"
TIMESTAMP=`date +%s`
while [ 1 ]
 do
    # ping -c 1 -W 0.7 8.8.4.4 > /dev/null 2>&1
    wget -q  -O - https://staging.site.com > /dev/null 2>&1
    if [ $? -eq 0 ] ; then
        if [ "$INTERNET_STATUS" != "UP" ]; then
            echo "UP   `date +%Y-%m-%dT%H:%M:%S%Z` $((`date +%s`-$TIMESTAMP))";
            INTERNET_STATUS="UP"
        fi
    else
        if [ "$INTERNET_STATUS" = "UP" ]; then
            echo "DOWN `date +%Y-%m-%dT%H:%M:%S%Z` $((`date +%s`-$TIMESTAMP))";
            INTERNET_STATUS="DOWN"
        fi
    fi
    sleep 1
 done;

You can

chmod +x

to make it executable and then run

./script.sh

from the terminal to start it. You could also add a crontab, but I do not want to run it all the time or at certain times automatically. I just want to run it at will.

Wget Not Ping

As you can see I am using wget, not ping as ICMP is often blocked by ISPS. I am also using the domain of a site I work on a lot to check as TOT Thailand often has no issues displaying local websites, but sucks at dealing with sites located on the other site of the planet.

Results

I have been running it for close to 24 hrs and here is part of the time I did not change ISP – switching to AIS 4G often due to crap TOT connection here in Thailand and an occasional router issue:

DOWN 2019-03-26T18:46:43+07 15005
UP   2019-03-26T18:46:45+07 15007
DOWN 2019-03-26T20:44:04+07 22046
UP   2019-03-26T20:44:07+07 22049
DOWN 2019-03-26T22:39:20+07 28962
UP   2019-03-26T22:39:22+07 28964
DOWN 2019-03-27T01:45:24+07 40126
UP   2019-03-27T01:45:26+07 40128
DOWN 2019-03-27T02:16:27+07 41989
UP   2019-03-27T02:16:30+07 41992
DOWN 2019-03-27T02:19:56+07 42198
UP   2019-03-27T02:20:30+07 42232
DOWN 2019-03-27T02:45:35+07 43737
UP   2019-03-27T02:45:38+07 43740
DOWN 2019-03-27T03:31:13+07 46475
UP   2019-03-27T03:31:17+07 46479

As you can see there was a lot of crap going on at night with things turning on and off from 1:45 to 3:31. Often just a few seconds. This is mainly due to TOT switching my router to a new ip in a poor way or general node or international gateway issues. Will be upgrading my local network soon so that can be excluded totally and do some more testing.

Bonus: Check Wifi Strength MacOS

To check wifi strength on OSX you can use

while x=1; do /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | grep CtlRSSI; sleep 0.5; done

Reading Open Gear Zendesk article you can see

  • -100 dBm or less: Unacceptable signal, check antenna connection
  • -99 dbm to -90 dBm: Weak signal
  • -89 dbm to -70 dBm: Medium to high signal
  • -69 dBm or greater: Strong signal

I just tested and got

agrCtlRSSI: -73
agrCtlRSSI: -73
agrCtlRSSI: -73
agrCtlRSSI: -73
agrCtlRSSI: -73
agrCtlRSSI: -73
agrCtlRSSI: -73
agrCtlRSSI: -73
agrCtlRSSI: -73

as my RSSI (Received Signal Strength Indicator) so Medium to High. However this is not the Signal to Noise checkup yet.

SNR Check

The Signal to Noise ratio check is there to really know if your wifi signal is good. A ratio based on signal and signal noise. For example I currently have an RSSSi of -74 dBm and Noise of -88 dBm the SNR will be 15 d. This is considered bad.

Here a table to help with understanding what SNR is good and bad from Wireless Nets.

> 40dB SNR = Excellent signal (5 bars); always associated; lightening fast.
25dB to 40dB SNR = Very good signal (3 - 4 bars); always associated; very fast.
15dB to 25dB SNR = Low signal (2 bars); always associated; usually fast.
10dB - 15dB SNR = Very low signal (1 bar); mostly associated; mostly slow.
5dB to 10dB SNR = No signal; not associated; no go.

NB Alt Click on Wifi Symbol in top bar will show wifi signal and noise information as well.

Jasper Frumau

Jasper has been working with web frameworks and applications such as Laravel, Magento and his favorite CMS WordPress including Roots Trellis and Sage for more than a decade. He helps customers with web design and online marketing. Services provided are web design, ecommerce, SEO, content marketing. When Jasper is not coding, marketing a website, reading about the web or dreaming the internet of things he plays with his son, travels or run a few blocks.