#!/bin/bash # Set the path to the log file LOG_FILE="/LINK/TO/File/speedtest.csv" # Run the speedtest and parse the output SPEEDTEST=$(speedtest-cli --csv) # Check if the output is empty or contains errors if [ -z "$SPEEDTEST" ] || [[ "$SPEEDTEST" == *"ERROR"* ]]; then echo "Speedtest failed: $SPEEDTEST" exit 1 fi PING=$(echo "$SPEEDTEST" | awk -F',' '{print $6}') DOWNLOAD=$(echo "$SPEEDTEST" | awk -F',' '{print $7}') UPLOAD=$(echo "$SPEEDTEST" | awk -F',' '{print $8}') # Check if the required fields are missing or invalid if [ -z "$PING" ] || [ -z "$DOWNLOAD" ] || [ -z "$UPLOAD" ]; then echo "Missing or invalid speedtest fields: PING=$PING, DOWNLOAD=$DOWNLOAD, UPLOAD=$UPLOAD" exit 1 fi # Convert the download and upload speeds to Mbps DOWNLOAD_Mbps=$(awk "BEGIN { printf \"%.1f\", $DOWNLOAD / (1024*1024) }") UPLOAD_Mbps=$(awk "BEGIN { printf \"%.1f\", $UPLOAD / (1024*1024) }") # Append the result to the log file echo "$(date +"%Y-%m-%d %H:%M:%S"),$PING,$DOWNLOAD_Mbps Mbps,$UPLOAD_Mbps Mbps" >> "$LOG_FILE" # Import the log file into Gnumeric to create a graph # ssconvert "$LOG_FILE" /tmp/log.ods