2023-05-07 20:23:09 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
2023-07-06 19:10:58 +00:00
|
|
|
# Set WAN Number
|
|
|
|
|
WAN="WAN NUMBER"
|
|
|
|
|
|
|
|
|
|
# Do you want the script to log to a CSV file? Set log variable to 1 for yes, 0 for no
|
|
|
|
|
log=SET_NUMBER
|
|
|
|
|
|
2023-05-07 20:23:09 +00:00
|
|
|
# Set the path to the log file
|
2023-07-06 19:10:58 +00:00
|
|
|
LOG_FILE="PATH TO CSV"
|
|
|
|
|
|
|
|
|
|
# Do you want the script to output to a Discord webhook? Set discord variable to 1 for yes, 0 for no
|
|
|
|
|
discord=SET_NUMBER
|
2023-05-07 20:23:09 +00:00
|
|
|
|
2023-05-21 21:03:43 +00:00
|
|
|
# Set your Discord webhook URL
|
2023-07-06 19:10:58 +00:00
|
|
|
WEBHOOK_URL="DISCORD WEBHOOK URL"
|
|
|
|
|
|
|
|
|
|
# Get IP info
|
|
|
|
|
INFO=$(curl -s https://ipv4.am.i.mullvad.net/json | python -m json.tool)
|
|
|
|
|
|
|
|
|
|
# Reported IP
|
|
|
|
|
IP=$(echo "$INFO" | grep -oE '"ip":\s*"[^"]+"' | grep -oE '[0-9.]+')
|
|
|
|
|
|
|
|
|
|
# Reported ISP
|
|
|
|
|
ORG=$(echo "$INFO" | grep -oE '"organization":\s*"[^"]+"' | grep -oE '"[^"]+"' | tr -d '"')
|
2023-05-21 21:03:43 +00:00
|
|
|
|
2023-07-06 19:12:00 +00:00
|
|
|
<<<<<<< HEAD
|
|
|
|
|
=======
|
2023-05-21 21:03:43 +00:00
|
|
|
# Set WAN Number
|
|
|
|
|
WAN="NUMBER"
|
2023-06-18 20:26:30 +00:00
|
|
|
|
2023-07-06 19:12:00 +00:00
|
|
|
>>>>>>> e74072aff15ddfef5a49aa6a3c1a5d270925c90c
|
2023-05-07 20:23:09 +00:00
|
|
|
# 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) }")
|
|
|
|
|
|
2023-07-06 19:10:58 +00:00
|
|
|
if [ "$log" -eq 1 ]; then
|
|
|
|
|
echo "Variable is set to 1. Running command A."
|
|
|
|
|
|
|
|
|
|
# Append the result to the log file
|
|
|
|
|
echo "$(date +"%Y-%m-%d %H:%M:%S"),$ORG,$IP,$PING,$DOWNLOAD_Mbps Mbps,$UPLOAD_Mbps Mbps" >> "$LOG_FILE"
|
2023-05-07 20:23:09 +00:00
|
|
|
|
2023-07-06 19:10:58 +00:00
|
|
|
# Check if the variable is set to 0
|
|
|
|
|
elif [ "$log" -eq 0 ]; then
|
|
|
|
|
echo "Skipping log to file"
|
|
|
|
|
|
|
|
|
|
# Variable is not set to 1 or 0
|
|
|
|
|
else
|
|
|
|
|
echo "Variable is not set to a valid value."
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ "$discord" -eq 1 ]; then
|
|
|
|
|
echo "Variable is set to 1."
|
|
|
|
|
|
|
|
|
|
# Prepare the payload for the Discord webhook
|
|
|
|
|
curl -H "Content-Type: application/json" -X POST --data @- "$WEBHOOK_URL" <<EOF
|
|
|
|
|
{
|
|
|
|
|
"content": null,
|
|
|
|
|
"embeds": [
|
|
|
|
|
{
|
|
|
|
|
"title": "Speedtest Result - WAN $WAN",
|
|
|
|
|
"color": 5814783,
|
|
|
|
|
"fields": [
|
|
|
|
|
{
|
|
|
|
|
"name": "Time:",
|
|
|
|
|
"value": "$(date +'%Y-%m-%d %H:%M:%S')"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "ISP:",
|
|
|
|
|
"value": "$ORG"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "IP:",
|
|
|
|
|
"value": "$IP"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "Ping:",
|
|
|
|
|
"value": "$PING ms"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "Download:",
|
|
|
|
|
"value": "$DOWNLOAD_Mbps mbps"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "Upload:",
|
|
|
|
|
"value": "$UPLOAD_Mbps mbps"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"attachments": []
|
|
|
|
|
}
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Check if the variable is set to 0
|
|
|
|
|
elif [ "$discord" -eq 0 ]; then
|
|
|
|
|
echo "Skipping send to Discord"
|
|
|
|
|
|
|
|
|
|
# Variable is not set to 1 or 0
|
|
|
|
|
else
|
|
|
|
|
echo "Variable is not set to a valid value."
|
|
|
|
|
fi
|
2023-05-07 20:23:09 +00:00
|
|
|
|