47 lines
1.5 KiB
Bash
47 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
function prepare_log_file {
|
|
local log_file="/logs/authenticated.csv"
|
|
> "$log_file"
|
|
mkdir -p $(dirname "$log_file")
|
|
touch "$log_file"
|
|
}
|
|
|
|
function run_apache_bench_and_check_ttfb {
|
|
local urls=(${URLS//,/ })
|
|
local username=$USERNAME
|
|
local password=$PASSWORD
|
|
local requests=$REQUESTS
|
|
local concurrency=$CONCURRENCY
|
|
local log_file="/logs/authenticated.csv"
|
|
|
|
echo "URL,Average TTFB (ms),AB Mean Time per Request (ms)" | tee "$log_file"
|
|
|
|
for url in "${urls[@]}"; do
|
|
local total_ttfb=0
|
|
local ttfb=0
|
|
|
|
# Apache Bench
|
|
local ab_summary=$(ab -n "$requests" -c "$concurrency" -A "$username:$password" "$url" 2>&1 | grep "Time per request" | head -1)
|
|
local ab_mean_time_per_request=$(echo "$ab_summary" | awk '{print $4}' | awk '{printf "%.3f", $1}')
|
|
|
|
# TTFB
|
|
for i in {1..5}; do
|
|
ttfb=$(curl -o /dev/null -s -w "%{time_starttransfer}\n" -u "$username:$password" "$url")
|
|
total_ttfb=$(echo "$total_ttfb + $ttfb" | bc -l)
|
|
done
|
|
local mean_ttfb=$(echo "scale=3; ($total_ttfb / 5) * 1000" | bc)
|
|
|
|
echo "$url,${mean_ttfb},${ab_mean_time_per_request}" | tee -a "$log_file"
|
|
done
|
|
}
|
|
|
|
function upload_to_hastebin {
|
|
local log_file="/logs/authenticated.csv"
|
|
local haste_url=$(curl -X POST -s -F "file=@${log_file}" https://haste.nixc.us/documents | awk -F '"' '{print "https://haste.nixc.us/"$4}')
|
|
echo "Logs uploaded to: $haste_url"
|
|
}
|
|
|
|
prepare_log_file
|
|
run_apache_bench_and_check_ttfb
|
|
upload_to_hastebin |