diff --git a/runtest.sh b/runtest.sh index 6050722..7828800 100755 --- a/runtest.sh +++ b/runtest.sh @@ -18,7 +18,10 @@ fi 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=$! echo "Starting kismet..." @@ -39,11 +42,11 @@ freq_to_channel() { local channel=0 if [ "$freq" -ge 2412 ] && [ "$freq" -le 2472 ]; then - channel=$(( (freq - 2407) / 5 )) + channel=$(((freq - 2407) / 5)) elif [ "$freq" -eq 2484 ]; then channel=14 elif [ "$freq" -ge 5180 ] && [ "$freq" -le 5825 ]; then - channel=$(( (freq - 5000) / 5 )) + channel=$(((freq - 5000) / 5)) else channel="Unknown" fi @@ -83,8 +86,8 @@ run_iperf() { end' || echo "execution-failed") if [[ "$result" == "iperf3-error" || "$result" == "no-end" || "$result" == "unexpected-format" || "$result" == "execution-failed" ]]; then - echo "$(date -Iseconds),iperf $mode $direction to $target failed with '$result'" >> "$FAILURE_LOG" - echo "[stderr] $(cat "$tmp_err")" >> "$FAILURE_LOG" + echo "$(date -Iseconds),iperf $mode $direction to $target failed with '$result'" >>"$FAILURE_LOG" + echo "[stderr] $(cat "$tmp_err")" >>"$FAILURE_LOG" echo "0" else echo "$result" @@ -101,15 +104,14 @@ FAILED_START=$(get_tx_failed) # Create CSV header if needed if [ ! -f "$TEST_FILE" ]; then - echo "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_FILE" + echo "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_FILE" fi while [ "$COUNTER" -lt "$NUM_TESTS" ]; do COUNTER=$((COUNTER + 1)) echo "Executing test $COUNTER of $NUM_TESTS..." - - for ((i=1; i<=NUM_SAMPLES; i++)); do + for ((i = 1; i <= NUM_SAMPLES; i++)); do echo " Gathering sample $i of $NUM_SAMPLES..." START_TIME=$(date -Iseconds) @@ -118,33 +120,32 @@ while [ "$COUNTER" -lt "$NUM_TESTS" ]; do bssid_and_bitrate=$(iw dev $INTERFACE link | awk '/Connected/ {bssid=$3} /tx bitrate/ {tx=$3} /rx bitrate/ {rx=$3} END {print bssid","tx","rx}') speed_results="" - for ((retry=1; retry<=MAX_RETRIES; retry++)); do - echo " Attempting speed test (try $retry)..." - speed_results=$(speedtest --secure --csv 2>/dev/null) + for ((retry = 1; retry <= MAX_RETRIES; retry++)); do + echo " Attempting speed test (try $retry)..." + speed_results=$(speedtest --secure --csv 2>/dev/null) - if [[ -n "$speed_results" ]]; then - break - fi + if [[ -n "$speed_results" ]]; then + break + fi - echo " [!] Speedtest failed at $(date -Iseconds). Retrying in $RETRY_DELAY seconds..." - sleep $RETRY_DELAY + echo " [!] Speedtest failed at $(date -Iseconds). Retrying in $RETRY_DELAY seconds..." + sleep $RETRY_DELAY done if [[ -z "$speed_results" ]]; then - TIMESTAMP=$(date -Iseconds) - echo " [!] Speedtest permanently failed at $TIMESTAMP. Skipping sample $i of test $COUNTER." + TIMESTAMP=$(date -Iseconds) + echo " [!] Speedtest permanently failed at $TIMESTAMP. Skipping sample $i of test $COUNTER." - # Optionally log failure to a sidecar file for later nerd rage - echo "$TIMESTAMP,Test $COUNTER,Sample $i" >> "${TEST_FILE%.csv}-failures.log" + # Optionally log failure to a sidecar file for later nerd rage + echo "$TIMESTAMP,Test $COUNTER,Sample $i" >>"${TEST_FILE%.csv}-failures.log" - continue # Skip this sample + continue # Skip this sample fi - # TX failure delta FAILED_NOW=$(get_tx_failed) FAILED_DELTA=$((FAILED_NOW - FAILED_START)) - FAILED_START=$FAILED_NOW # Update for next sample + FAILED_START=$FAILED_NOW # Update for next sample freq=$(iw dev $INTERFACE link | awk '/freq:/ {print $2}') channel=$(freq_to_channel "$freq") @@ -168,13 +169,13 @@ while [ "$COUNTER" -lt "$NUM_TESTS" ]; do END_TIME=$(date -Iseconds) # Log everything - 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" - if [ "$COUNTER" -lt "$NUM_TESTS" ]; then - echo "Dozing off for $TIME_BETWEEN..." - sleep $TIME_BETWEEN - fi -done + if [ "$COUNTER" -lt "$NUM_TESTS" ]; then + echo "Dozing off for $TIME_BETWEEN..." + sleep $TIME_BETWEEN + fi + done done echo "Stopping kismet..."