diff --git a/speedtest.sh b/speedtest.sh index c8692e9..9aac057 100755 --- a/speedtest.sh +++ b/speedtest.sh @@ -27,24 +27,30 @@ run_speedtest() JSON=$(speedtest --accept-license --accept-gdpr -f json) fi - DOWNLOAD="$(echo $JSON | jq -r '.download.bandwidth')" - UPLOAD="$(echo $JSON | jq -r '.upload.bandwidth')" - PING="$(echo $JSON | jq -r '.ping.latency')" - echo "Your download speed is $(($DOWNLOAD / 125000 )) Mbps ($DOWNLOAD Bytes/s)." - echo "Your upload speed is $(($UPLOAD / 125000 )) Mbps ($UPLOAD Bytes/s)." - echo "Your ping is $PING ms." + json_result_found="$(echo "$JSON" | jq 'select(.type == "result")')" - # Save results in the database - if $DB_SAVE; - then - echo "Saving values to database..." - curl -s -S -XPOST "$DB_HOST/write?db=$DB_NAME&precision=s&u=$DB_USERNAME&p=$DB_PASSWORD" \ - --data-binary "download,host=$HOSTNAME value=$DOWNLOAD $DATE" - curl -s -S -XPOST "$DB_HOST/write?db=$DB_NAME&precision=s&u=$DB_USERNAME&p=$DB_PASSWORD" \ - --data-binary "upload,host=$HOSTNAME value=$UPLOAD $DATE" - curl -s -S -XPOST "$DB_HOST/write?db=$DB_NAME&precision=s&u=$DB_USERNAME&p=$DB_PASSWORD" \ - --data-binary "ping,host=$HOSTNAME value=$PING $DATE" - echo "Values saved." + if [ -n "${json_result_found}" ]; then + DOWNLOAD="$(echo "$JSON" | jq -r '.download.bandwidth')" + UPLOAD="$(echo "$JSON" | jq -r '.upload.bandwidth')" + PING="$(echo "$JSON" | jq -r '.ping.latency')" + echo "Your download speed is $((DOWNLOAD / 125000 )) Mbps ($DOWNLOAD Bytes/s)." + echo "Your upload speed is $((UPLOAD / 125000 )) Mbps ($UPLOAD Bytes/s)." + echo "Your ping is $PING ms." + + # Save results in the database + if $DB_SAVE; + then + echo "Saving values to database..." + curl -s -S -XPOST "$DB_HOST/write?db=$DB_NAME&precision=s&u=$DB_USERNAME&p=$DB_PASSWORD" \ + --data-binary "download,host=$HOSTNAME value=$DOWNLOAD $DATE" + curl -s -S -XPOST "$DB_HOST/write?db=$DB_NAME&precision=s&u=$DB_USERNAME&p=$DB_PASSWORD" \ + --data-binary "upload,host=$HOSTNAME value=$UPLOAD $DATE" + curl -s -S -XPOST "$DB_HOST/write?db=$DB_NAME&precision=s&u=$DB_USERNAME&p=$DB_PASSWORD" \ + --data-binary "ping,host=$HOSTNAME value=$PING $DATE" + echo "Values saved." + fi + else + echo "[error] Unable to retrieve JSON results from speedtest, please see previous log message" fi }