#!/bin/bash
#This script sits on an iperf server and allows simple starting and stopping off iperf. Note, for
# stopping you need to specify the port and protocol
modeoption=$1
serverport=$2
operation=$3
mode=""
if [ "$modeoption" = "udp" ]; then
mode="-u"
elif [ "$modeoption" = "tcp" ]; then
mode=""
elif [ "$modeoption" = "query-all" ]; then
/bin/ps -fC iperf
exit 0
elif [ "$modeoption" = "query" ]; then
/bin/ls ./iperf*.pid
exit 0
else
echo "usage: iperfd <tcp|udp> <port number> <start|stop>, or iperfd <query|query-all> "
exit 0
fi
if [ "$operation" = "start" ]; then
echo "Starting iperf on $modeoption port $serverport ..."
/usr/bin/iperf -s -D -p $serverport $mode
#Line below lists process IDs (-o pid), sorted by time, with no column
# description (grep -v PID) and just the top line (head -1). This shoudl alsways get the PID
# of the iperf just started!
ps -C iperf -o pid --sort=-start_time | grep -v PID | head -1 > iperf-$modeoption$serverport.pid
echo "... done"
elif [ "$operation" = "stop" ]; then
kill -9 `cat iperf-$modeoption$serverport.pid`
echo "iperf server `cat iperf-$modeoption$serverport.pid` stopped"
rm iperf-$modeoption$serverport.pid
else
echo "usage: iperfd <tcp|udp> <port number> <start|stop>, or iperfd <query|query-all> "
exit 0
fi
-- TobyRodwell - 24 Jul 2007