Add --no-iperf flag to skip iperf3 tests and improve argument handling
This commit is contained in:
parent
89dd1e030e
commit
0effd8a28d
1 changed files with 73 additions and 59 deletions
132
runtest.sh
132
runtest.sh
|
@ -5,38 +5,43 @@ trap 'echo "[✖] Execution halted at line $LINENO. Please consult your nearest
|
||||||
trap 'echo "[✌️] Script exited cleanly. Have a burrito." >&2' EXIT
|
trap 'echo "[✌️] Script exited cleanly. Have a burrito." >&2' EXIT
|
||||||
|
|
||||||
NO_ENRICH=0
|
NO_ENRICH=0
|
||||||
|
NO_IPERF=0
|
||||||
LISTENER_ENABLED=0
|
LISTENER_ENABLED=0
|
||||||
LISTENER_ARGS=()
|
LISTENER_ARGS=()
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--no-enrich)
|
--no-enrich)
|
||||||
NO_ENRICH=1
|
NO_ENRICH=1
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--listener)
|
--listener)
|
||||||
LISTENER_ENABLED=1
|
LISTENER_ENABLED=1
|
||||||
NO_ENRICH=1
|
NO_ENRICH=1
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--listener-channel=*)
|
--listener-channel=*)
|
||||||
LISTENER_ARGS+=("--channel" "${1#*=}")
|
LISTENER_ARGS+=("--channel" "${1#*=}")
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--listener-hop)
|
--listener-hop)
|
||||||
LISTENER_ARGS+=("--channel-hop")
|
LISTENER_ARGS+=("--channel-hop")
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
*)
|
--no-iperf)
|
||||||
echo "Unknown argument: $1"
|
NO_IPERF=1
|
||||||
exit 1
|
shift
|
||||||
;;
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown argument: $1"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
|
|
||||||
echo "Here are the arguments passed to the script: $@"
|
echo "Here are the arguments passed to the script: $@"
|
||||||
|
|
||||||
# === Now start your real script ===
|
# === Now start your real script ===
|
||||||
source settings.env
|
source settings.env
|
||||||
|
@ -76,7 +81,10 @@ log "Enriched file: $ENRICHED_FILE"
|
||||||
log "SSID metrics file: $SSID_METRICS_FILE"
|
log "SSID metrics file: $SSID_METRICS_FILE"
|
||||||
|
|
||||||
sudo -v
|
sudo -v
|
||||||
while true; do sudo -n true; sleep 60; done 2>/dev/null &
|
while true; do
|
||||||
|
sudo -n true
|
||||||
|
sleep 60
|
||||||
|
done 2>/dev/null &
|
||||||
SUDO_KEEPALIVE_PID=$!
|
SUDO_KEEPALIVE_PID=$!
|
||||||
|
|
||||||
if [ "$LISTENER_ENABLED" -eq 0 ]; then
|
if [ "$LISTENER_ENABLED" -eq 0 ]; then
|
||||||
|
@ -93,9 +101,12 @@ get_tx_failed() {
|
||||||
|
|
||||||
freq_to_channel() {
|
freq_to_channel() {
|
||||||
local freq=$1
|
local freq=$1
|
||||||
if (( freq >= 2412 && freq <= 2472 )); then echo $(((freq - 2407) / 5))
|
if ((freq >= 2412 && freq <= 2472)); then
|
||||||
elif (( freq == 2484 )); then echo 14
|
echo $(((freq - 2407) / 5))
|
||||||
elif (( freq >= 5180 && freq <= 5825 )); then echo $(((freq - 5000) / 5))
|
elif ((freq == 2484)); then
|
||||||
|
echo 14
|
||||||
|
elif ((freq >= 5180 && freq <= 5825)); then
|
||||||
|
echo $(((freq - 5000) / 5))
|
||||||
else echo "Unknown"; fi
|
else echo "Unknown"; fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +155,7 @@ FAILED_START=$(get_tx_failed)
|
||||||
# CSV setup
|
# CSV setup
|
||||||
TEST_HEADER="StartTimestamp,EndTimestamp,Link,Level,Noise,BSSID,TX Bitrate,RX Bitrate,$(speedtest --csv-header),TX Failures,Channel,Frequency,Packet Loss,Jitter,LocalTCPUp,LocalTCPDown,LocalUDPUp,LocalUDPDown,RemoteTCPUp,RemoteTCPDown,RemoteUDPUp,RemoteUDPDown"
|
TEST_HEADER="StartTimestamp,EndTimestamp,Link,Level,Noise,BSSID,TX Bitrate,RX Bitrate,$(speedtest --csv-header),TX Failures,Channel,Frequency,Packet Loss,Jitter,LocalTCPUp,LocalTCPDown,LocalUDPUp,LocalUDPDown,RemoteTCPUp,RemoteTCPDown,RemoteUDPUp,RemoteUDPDown"
|
||||||
LISTENER_HEADER="Timestamp,ClientsOnAP,ClientsOnChannel,APsOnChannel,AvgAPSignal,StrongestAPSignal,UnlinkedDevices,NumberofBSSIDsOnSSID,AvgSSIDSignal,MaxSSIDSignal,NumberofChannelsOnSSID,PacketCount,Deadpoints"
|
LISTENER_HEADER="Timestamp,ClientsOnAP,ClientsOnChannel,APsOnChannel,AvgAPSignal,StrongestAPSignal,UnlinkedDevices,NumberofBSSIDsOnSSID,AvgSSIDSignal,MaxSSIDSignal,NumberofChannelsOnSSID,PacketCount,Deadpoints"
|
||||||
echo "Speedtest,LocalTCPUp,LocalTCPDown,LocalUDPUp,LocalUDPDown,RemoteTCPUp,RemoteTCPDown,RemoteUDPUp,RemoteUDPDown" > "${TEST_FILE}_durations.csv"
|
echo "Speedtest,LocalTCPUp,LocalTCPDown,LocalUDPUp,LocalUDPDown,RemoteTCPUp,RemoteTCPDown,RemoteUDPUp,RemoteUDPDown" >"${TEST_FILE}_durations.csv"
|
||||||
|
|
||||||
if [ ! -f "$TEST_FILE" ]; then
|
if [ ! -f "$TEST_FILE" ]; then
|
||||||
if [ "$LISTENER_ENABLED" -eq 1 ]; then
|
if [ "$LISTENER_ENABLED" -eq 1 ]; then
|
||||||
|
@ -201,7 +212,7 @@ for ((COUNTER = 1; COUNTER <= NUM_TESTS; COUNTER++)); do
|
||||||
speedtest_duration=$SECONDS
|
speedtest_duration=$SECONDS
|
||||||
[[ -n "$speed_results" ]] && break
|
[[ -n "$speed_results" ]] && break
|
||||||
warn "Speedtest failed. Retrying in $RETRY_DELAY seconds..."
|
warn "Speedtest failed. Retrying in $RETRY_DELAY seconds..."
|
||||||
echo "$(date -Iseconds),Speedtest failed on attempt $retry for test $COUNTER, sample $i" >> "$FAILURE_LOG"
|
echo "$(date -Iseconds),Speedtest failed on attempt $retry for test $COUNTER, sample $i" >>"$FAILURE_LOG"
|
||||||
sleep "$RETRY_DELAY"
|
sleep "$RETRY_DELAY"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -225,31 +236,34 @@ for ((COUNTER = 1; COUNTER <= NUM_TESTS; COUNTER++)); do
|
||||||
packet_loss=$(echo "$ping_output" | grep -oP '\d+(?=% packet loss)')
|
packet_loss=$(echo "$ping_output" | grep -oP '\d+(?=% packet loss)')
|
||||||
jitter=$(echo "$ping_output" | grep "time=" | awk '{print $(NF-1)}' | sed 's/time=//g' | awk '{sum+=$1; sumsq+=$1*$1} END {if (NR>1) print sqrt(sumsq/NR - (sum/NR)**2); else print 0}')
|
jitter=$(echo "$ping_output" | grep "time=" | awk '{print $(NF-1)}' | sed 's/time=//g' | awk '{sum+=$1; sumsq+=$1*$1} END {if (NR>1) print sqrt(sumsq/NR - (sum/NR)**2); else print 0}')
|
||||||
|
|
||||||
log " Running iperf3 tests..."
|
if [ "$NO_IPERF" -eq 0 ]; then
|
||||||
SECONDS=0
|
log " Running iperf3 tests..."
|
||||||
LocalTCPUp=$(run_iperf "$IPERF_LOCAL_TARGET" tcp up)
|
SECONDS=0
|
||||||
localtcpup_duration=$SECONDS
|
LocalTCPUp=$(run_iperf "$IPERF_LOCAL_TARGET" tcp up)
|
||||||
SECONDS=0
|
localtcpup_duration=$SECONDS
|
||||||
LocalTCPDown=$(run_iperf "$IPERF_LOCAL_TARGET" tcp down)
|
...
|
||||||
localtcpdown_duration=$SECONDS
|
SECONDS=0
|
||||||
SECONDS=0
|
RemoteUDPDown=$(run_iperf "$IPERF_REMOTE_TARGET" udp down)
|
||||||
LocalUDPUp=$(run_iperf "$IPERF_LOCAL_TARGET" udp up)
|
remoteudpdown_duration=$SECONDS
|
||||||
localudpup_duration=$SECONDS
|
else
|
||||||
SECONDS=0
|
log " Skipping iperf3 tests as per --no-iperf flag"
|
||||||
LocalUDPDown=$(run_iperf "$IPERF_LOCAL_TARGET" udp down)
|
LocalTCPUp=0
|
||||||
localudpdown_duration=$SECONDS
|
LocalTCPDown=0
|
||||||
SECONDS=0
|
LocalUDPUp=0
|
||||||
RemoteTCPUp=$(run_iperf "$IPERF_REMOTE_TARGET" tcp up)
|
LocalUDPDown=0
|
||||||
remotetcpup_duration=$SECONDS
|
RemoteTCPUp=0
|
||||||
SECONDS=0
|
RemoteTCPDown=0
|
||||||
RemoteTCPDown=$(run_iperf "$IPERF_REMOTE_TARGET" tcp down)
|
RemoteUDPUp=0
|
||||||
remotetcpdown_duration=$SECONDS
|
RemoteUDPDown=0
|
||||||
SECONDS=0
|
localtcpup_duration=0
|
||||||
RemoteUDPUp=$(run_iperf "$IPERF_REMOTE_TARGET" udp up)
|
localtcpdown_duration=0
|
||||||
remoteudpup_duration=$SECONDS
|
localudpup_duration=0
|
||||||
SECONDS=0
|
localudpdown_duration=0
|
||||||
RemoteUDPDown=$(run_iperf "$IPERF_REMOTE_TARGET" udp down)
|
remotetcpup_duration=0
|
||||||
remoteudpdown_duration=$SECONDS
|
remotetcpdown_duration=0
|
||||||
|
remoteudpup_duration=0
|
||||||
|
remoteudpdown_duration=0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$LISTENER_ENABLED" -eq 1 ]; then
|
if [ "$LISTENER_ENABLED" -eq 1 ]; then
|
||||||
if [ -n "${LISTENER_PID:-}" ]; then
|
if [ -n "${LISTENER_PID:-}" ]; then
|
||||||
|
@ -260,26 +274,26 @@ for ((COUNTER = 1; COUNTER <= NUM_TESTS; COUNTER++)); do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
END_TIME=$(date -Iseconds)
|
END_TIME=$(date -Iseconds)
|
||||||
|
|
||||||
if [ "$LISTENER_ENABLED" -eq 1 ] && [ -n "${LISTENER_SAMPLE_FILE:-}" ]; then
|
if [ "$LISTENER_ENABLED" -eq 1 ] && [ -n "${LISTENER_SAMPLE_FILE:-}" ]; then
|
||||||
if [ -f "$LISTENER_SAMPLE_FILE" ]; then
|
if [ -f "$LISTENER_SAMPLE_FILE" ]; then
|
||||||
LISTENER_ROW=$(tail -n 1 "$LISTENER_SAMPLE_FILE")
|
LISTENER_ROW=$(tail -n 1 "$LISTENER_SAMPLE_FILE")
|
||||||
if [ -n "$LISTENER_ROW" ]; then
|
if [ -n "$LISTENER_ROW" ]; then
|
||||||
echo "$START_TIME,$END_TIME,$link_level_noise,$bssid_and_bitrate,$speed_results,$FAILED_DELTA,$channel,$freq,$packet_loss,$jitter,$LocalTCPUp,$LocalTCPDown,$LocalUDPUp,$LocalUDPDown,$RemoteTCPUp,$RemoteTCPDown,$RemoteUDPUp,$RemoteUDPDown,$LISTENER_ROW" >> "$TEST_FILE"
|
echo "$START_TIME,$END_TIME,$link_level_noise,$bssid_and_bitrate,$speed_results,$FAILED_DELTA,$channel,$freq,$packet_loss,$jitter,$LocalTCPUp,$LocalTCPDown,$LocalUDPUp,$LocalUDPDown,$RemoteTCPUp,$RemoteTCPDown,$RemoteUDPUp,$RemoteUDPDown,$LISTENER_ROW" >>"$TEST_FILE"
|
||||||
else
|
else
|
||||||
warn "Listener output file $LISTENER_SAMPLE_FILE was empty. Appending blank listener columns."
|
warn "Listener output file $LISTENER_SAMPLE_FILE was empty. Appending blank listener columns."
|
||||||
echo "$START_TIME,$END_TIME,$link_level_noise,$bssid_and_bitrate,$speed_results,$FAILED_DELTA,$channel,$freq,$packet_loss,$jitter,$LocalTCPUp,$LocalTCPDown,$LocalUDPUp,$LocalUDPDown,$RemoteTCPUp,$RemoteTCPDown,$RemoteUDPUp,$RemoteUDPDown,$(yes ',' | head -n 12 | tr -d '\n')" >> "$TEST_FILE"
|
echo "$START_TIME,$END_TIME,$link_level_noise,$bssid_and_bitrate,$speed_results,$FAILED_DELTA,$channel,$freq,$packet_loss,$jitter,$LocalTCPUp,$LocalTCPDown,$LocalUDPUp,$LocalUDPDown,$RemoteTCPUp,$RemoteTCPDown,$RemoteUDPUp,$RemoteUDPDown,$(yes ',' | head -n 12 | tr -d '\n')" >>"$TEST_FILE"
|
||||||
fi
|
fi
|
||||||
rm -f "$LISTENER_SAMPLE_FILE"
|
rm -f "$LISTENER_SAMPLE_FILE"
|
||||||
else
|
else
|
||||||
warn "Listener sample file $LISTENER_SAMPLE_FILE not found. Appending blank listener columns."
|
warn "Listener sample file $LISTENER_SAMPLE_FILE not found. Appending blank listener columns."
|
||||||
echo "$START_TIME,$END_TIME,$link_level_noise,$bssid_and_bitrate,$speed_results,$FAILED_DELTA,$channel,$freq,$packet_loss,$jitter,$LocalTCPUp,$LocalTCPDown,$LocalUDPUp,$LocalUDPDown,$RemoteTCPUp,$RemoteTCPDown,$RemoteUDPUp,$RemoteUDPDown,$(yes ',' | head -n 12 | tr -d '\n')" >> "$TEST_FILE"
|
echo "$START_TIME,$END_TIME,$link_level_noise,$bssid_and_bitrate,$speed_results,$FAILED_DELTA,$channel,$freq,$packet_loss,$jitter,$LocalTCPUp,$LocalTCPDown,$LocalUDPUp,$LocalUDPDown,$RemoteTCPUp,$RemoteTCPDown,$RemoteUDPUp,$RemoteUDPDown,$(yes ',' | head -n 12 | tr -d '\n')" >>"$TEST_FILE"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "$START_TIME,$END_TIME,$link_level_noise,$bssid_and_bitrate,$speed_results,$FAILED_DELTA,$channel,$freq,$packet_loss,$jitter,$LocalTCPUp,$LocalTCPDown,$LocalUDPUp,$LocalUDPDown,$RemoteTCPUp,$RemoteTCPDown,$RemoteUDPUp,$RemoteUDPDown" >> "$TEST_FILE"
|
echo "$START_TIME,$END_TIME,$link_level_noise,$bssid_and_bitrate,$speed_results,$FAILED_DELTA,$channel,$freq,$packet_loss,$jitter,$LocalTCPUp,$LocalTCPDown,$LocalUDPUp,$LocalUDPDown,$RemoteTCPUp,$RemoteTCPDown,$RemoteUDPUp,$RemoteUDPDown" >>"$TEST_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$START_TIME,$speedtest_duration,$localtcpup_duration,$localtcpdown_duration,$localudpup_duration,$localudpdown_duration,$remotetcpup_duration,$remotetcpdown_duration,$remoteudpup_duration,$remoteudpdown_duration" >> "${TEST_FILE}_durations.csv"
|
echo "$START_TIME,$speedtest_duration,$localtcpup_duration,$localtcpdown_duration,$localudpup_duration,$localudpdown_duration,$remotetcpup_duration,$remotetcpdown_duration,$remoteudpup_duration,$remoteudpdown_duration" >>"${TEST_FILE}_durations.csv"
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue