Last active
September 24, 2023 05:25
-
-
Save richardhsu/de812fab6baa5f5a304d to your computer and use it in GitHub Desktop.
IPerf to send specific number of packets per second.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
PORT=50000 | |
TIME=60 | |
print_usage () { | |
echo "Usage: ./iperf.sh [-s|-c destination] [-h] [-p port] [-t time] -k total_packets_per_sec" | |
echo " -h|--help : Print usage." | |
echo " -s : Server mode which receives the data." | |
echo " -c : Client mode which sends the data. Requires destination." | |
echo " -p|--port : Port to use for server or to connect to. Default 50000." | |
echo " -t|--time : Number of seconds to run. Default 60 seconds." | |
echo " -k|--pkts : Number of packets per second to send." | |
} | |
while [[ $# -ge 1 ]] | |
do | |
key="$1" | |
shift | |
# Case through the flags | |
case $key in | |
-h|--help) | |
print_usage | |
exit 1 | |
;; | |
-p|--port) | |
PORT=$1 | |
shift | |
;; | |
-c) | |
MODE='-c' | |
DESTINATION=$1 | |
shift | |
;; | |
-s) | |
MODE='-s' | |
;; | |
-k|--pkts) | |
PKTS=$1 | |
shift | |
;; | |
-t|--time) | |
TIME=$1 | |
shift | |
;; | |
*) | |
;; | |
esac | |
done | |
if [[ -z "$MODE" ]] | |
then | |
echo "ERROR: You need a mode to use, either -c for client or -s for server." | |
print_usage | |
exit 1 | |
fi | |
if [[ -z "$PKTS" ]] | |
then | |
echo "ERROR: You need a total number of packets to send per second. See -k." | |
print_usage | |
exit 1 | |
fi | |
if [[ $MODE == '-c' ]] | |
then | |
if [[ -z "$DESTINATION" ]] | |
then | |
echo "ERROR: You need a destination in client mode. See -c." | |
print_usage | |
exit 1 | |
fi | |
let BANDWIDTH=96*$PKTS | |
iperf -u -c $DESTINATION -p $PORT -l 12 -b $BANDWIDTH -t $TIME -i 1 | |
else | |
# Accept 10MB at most and output every 1 second | |
iperf -u -s -p $PORT -w 10M -i 1 -o iperf.server.out | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment