You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.9 KiB
Bash
56 lines
1.9 KiB
Bash
#!/bin/bash
|
|
|
|
# Usage: doSpeedtest [<interface>] [<speedtest-server-id>]
|
|
function doSpeedtest {
|
|
if ! [ "${1}" = "" ]; then
|
|
INTERFACE=${1}
|
|
INTERFACE_ARG="-I ${INTERFACE}"
|
|
INTERFACE_TEXT=" from NIC '${INTERFACE}'"
|
|
fi
|
|
|
|
if ! [ "${2}" = "" ]; then
|
|
SERVER_ID=${2}
|
|
SERVER_ARG="-s ${SERVER_ID}"
|
|
SERVER_ID_TEXT=" to server ${SERVER_ID}"
|
|
fi
|
|
|
|
logScript "Doing internet speedtest${INTERFACE_TEXT}${SERVER_ID_TEXT}"
|
|
|
|
if ! OUT=$(speedtest -f json 2>/dev/null); then
|
|
logError "Speedtest failed"
|
|
echo "${OUT}" | logError
|
|
|
|
SUCCESS=false
|
|
JITTER=-1
|
|
LATENCY=-1
|
|
PING_LOW=-1
|
|
PING_HIGH=-1
|
|
DOWNLOAD_BANDWIDTH=0
|
|
UPLOAD_BANDWIDTH=0
|
|
PACKET_LOSS=-1
|
|
ISP=""
|
|
INTERFACE=""
|
|
EXTERNAL_IP=""
|
|
SERVER_ID=""
|
|
RESULT_ID=""
|
|
else
|
|
SUCCESS=true
|
|
JITTER=$(echo "${OUT}" | jq .ping.jitter)
|
|
LATENCY=$(echo "${OUT}" | jq .ping.latency)
|
|
PING_LOW=$(echo "${OUT}" | jq .ping.low)
|
|
PING_HIGH=$(echo "${OUT}" | jq .ping.high)
|
|
DOWNLOAD_BANDWIDTH=$(echo "${OUT}" | jq .download.bandwidth)
|
|
UPLOAD_BANDWIDTH=$(echo "${OUT}" | jq .upload.bandwidth)
|
|
PACKET_LOSS=$(echo "${OUT}" | jq .packetLoss)
|
|
ISP="$(echo "${OUT}" | jq .isp)"
|
|
INTERFACE=$(echo "${OUT}" | jq .interface.name)
|
|
EXTERNAL_IP=$(echo "${OUT}" | jq .interface.externalIp)
|
|
SERVER_ID=$(echo "${OUT}" | jq .server.id)
|
|
RESULT_ID=$(echo "${OUT}" | jq .result.id)
|
|
fi
|
|
|
|
writeData \
|
|
speedtest \
|
|
"sourceHost=$(hostname -f)" \
|
|
"success=${SUCCESS},jitter=${JITTER},latency=${LATENCY},ping_low=${PING_LOW},ping_high=${PING_HIGH},download_bandwidth=${DOWNLOAD_BANDWIDTH},upload_bandwidth=${UPLOAD_BANDWIDTH},packetloss=${PACKET_LOSS},isp=${ISP},interface=${INTERFACE},external_ip=${EXTERNAL_IP},server_id=${SERVER_ID},result_id=${RESULT_ID}"
|
|
} |