Add listener functionality to runtest.sh for enhanced data capture
This commit is contained in:
parent
470d684fb5
commit
7d5fe1fbf5
1 changed files with 55 additions and 1 deletions
56
runtest.sh
56
runtest.sh
|
@ -5,12 +5,28 @@ 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
|
||||||
|
LISTENER_ENABLED=0
|
||||||
|
LISTENER_ARGS=()
|
||||||
|
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
case $arg in
|
case $arg in
|
||||||
--no-enrich)
|
--no-enrich)
|
||||||
NO_ENRICH=1
|
NO_ENRICH=1
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--listener)
|
||||||
|
LISTENER_ENABLED=1
|
||||||
|
NO_ENRICH=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--listener-channel=*)
|
||||||
|
LISTENER_ARGS+=("--channel" "${arg#*=}")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--listener-hop)
|
||||||
|
LISTENER_ARGS+=("--channel-hop")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown argument: $arg"
|
echo "Unknown argument: $arg"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -135,11 +151,32 @@ log "Start email sent in $SECONDS seconds"
|
||||||
FAILED_START=$(get_tx_failed)
|
FAILED_START=$(get_tx_failed)
|
||||||
|
|
||||||
# CSV setup
|
# CSV setup
|
||||||
[ ! -f "$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"
|
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"
|
||||||
|
|
||||||
|
if [ ! -f "$TEST_FILE" ]; then
|
||||||
|
if [ "$LISTENER_ENABLED" -eq 1 ]; then
|
||||||
|
echo "$TEST_HEADER,$LISTENER_HEADER" >"$TEST_FILE"
|
||||||
|
else
|
||||||
|
echo "$TEST_HEADER" >"$TEST_FILE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
for ((COUNTER = 1; COUNTER <= NUM_TESTS; COUNTER++)); do
|
for ((COUNTER = 1; COUNTER <= NUM_TESTS; COUNTER++)); do
|
||||||
|
|
||||||
log "Test run $COUNTER of $NUM_TESTS"
|
log "Test run $COUNTER of $NUM_TESTS"
|
||||||
for ((i = 1; i <= NUM_SAMPLES; i++)); do
|
for ((i = 1; i <= NUM_SAMPLES; i++)); do
|
||||||
|
if [ "$LISTENER_ENABLED" -eq 1 ]; then
|
||||||
|
LISTENER_SAMPLE_FILE="${TEST_FILE%.csv}-listener-$COUNTER-$i.csv"
|
||||||
|
|
||||||
|
log "Launching listener for sample $COUNTER/$i..."
|
||||||
|
sudo "${SCRIPT_DIRECTORY}/listener.py" \
|
||||||
|
--main-iface "$INTERFACE" \
|
||||||
|
--monitor-iface "$LISTEN_INTERFACE" \
|
||||||
|
--outfile "$LISTENER_SAMPLE_FILE" \
|
||||||
|
"${LISTENER_ARGS[@]}" &
|
||||||
|
LISTENER_PID=$!
|
||||||
|
fi
|
||||||
log " Sample $i of $NUM_SAMPLES"
|
log " Sample $i of $NUM_SAMPLES"
|
||||||
START_TIME=$(date -Iseconds)
|
START_TIME=$(date -Iseconds)
|
||||||
|
|
||||||
|
@ -192,6 +229,22 @@ for ((COUNTER = 1; COUNTER <= NUM_TESTS; COUNTER++)); do
|
||||||
RemoteUDPUp=$(run_iperf "$IPERF_REMOTE_TARGET" udp up)
|
RemoteUDPUp=$(run_iperf "$IPERF_REMOTE_TARGET" udp up)
|
||||||
RemoteUDPDown=$(run_iperf "$IPERF_REMOTE_TARGET" udp down)
|
RemoteUDPDown=$(run_iperf "$IPERF_REMOTE_TARGET" udp down)
|
||||||
|
|
||||||
|
if [ "$LISTENER_ENABLED" -eq 1 ]; then
|
||||||
|
if [ -n "${LISTENER_PID:-}" ]; then
|
||||||
|
log "Stopping listener (PID $LISTENER_PID)..."
|
||||||
|
sudo kill -SIGINT "$LISTENER_PID"
|
||||||
|
wait "$LISTENER_PID"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$LISTENER_SAMPLE_FILE" ]; then
|
||||||
|
log "Appending listener sample to main CSV..."
|
||||||
|
tail -n 1 "$LISTENER_SAMPLE_FILE" >> "$TEST_FILE"
|
||||||
|
rm -f "$LISTENER_SAMPLE_FILE"
|
||||||
|
else
|
||||||
|
warn "Listener output not found for sample $COUNTER/$i"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
END_TIME=$(date -Iseconds)
|
END_TIME=$(date -Iseconds)
|
||||||
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"
|
||||||
done
|
done
|
||||||
|
@ -218,6 +271,7 @@ ATTACHMENTS=()
|
||||||
[ -f "$ENRICHED_FILE" ] && ATTACHMENTS+=("$ENRICHED_FILE")
|
[ -f "$ENRICHED_FILE" ] && ATTACHMENTS+=("$ENRICHED_FILE")
|
||||||
[ -f "$FAILURE_LOG" ] && ATTACHMENTS+=("$FAILURE_LOG")
|
[ -f "$FAILURE_LOG" ] && ATTACHMENTS+=("$FAILURE_LOG")
|
||||||
[ -f "$SSID_METRICS_FILE" ] && ATTACHMENTS+=("$SSID_METRICS_FILE")
|
[ -f "$SSID_METRICS_FILE" ] && ATTACHMENTS+=("$SSID_METRICS_FILE")
|
||||||
|
[ -f "$LISTENER_OUTFILE" ] && ATTACHMENTS+=("$LISTENER_OUTFILE")
|
||||||
|
|
||||||
if [ ${#ATTACHMENTS[@]} -eq 0 ]; then
|
if [ ${#ATTACHMENTS[@]} -eq 0 ]; then
|
||||||
warn "No files to attach. Email not sent."
|
warn "No files to attach. Email not sent."
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue