35 lines
1.1 KiB
Bash
Executable File
35 lines
1.1 KiB
Bash
Executable File
#!/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
|
|
|