107 lines
3.1 KiB
Bash
Executable File
107 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
#******************************************************************************
|
|
|
|
# OpenAirInterface
|
|
# Copyright(c) 1999 - 2014 Eurecom
|
|
|
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
|
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with OpenAirInterface.The full GNU General Public License is
|
|
# included in this distribution in the file called "COPYING". If not,
|
|
# see <http://www.gnu.org/licenses/>.
|
|
|
|
# Contact Information
|
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
|
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
|
|
|
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
|
|
|
# *******************************************************************************/
|
|
# \author Navid Nikaein, Rohit Gupta
|
|
|
|
#arg1 timeout to wait before running the script
|
|
#arg2 interface
|
|
#arg3 iperf arguments
|
|
|
|
echo "Start time of script: `date`"
|
|
|
|
args=($*)
|
|
timeout=${args[0]}
|
|
iface=${args[1]}
|
|
iperf_args=(${args[@]:2})
|
|
|
|
ip_client=`echo "$iperf_args" | sed -ne 's/.*\-c[ ]*\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*/\1/p'`
|
|
|
|
#array=${1:-1}
|
|
echo "args = ${args[@]}"
|
|
echo "timeout = $timeout"
|
|
echo "iface = $iface"
|
|
echo "iperf_args = ${iperf_args[@]}"
|
|
echo "ip_client = $ip_client"
|
|
|
|
|
|
|
|
# Test an IP address for validity:
|
|
# Usage:
|
|
# valid_ip IP_ADDRESS
|
|
# if [[ $? -eq 0 ]]; then echo good; else echo bad; fi
|
|
# OR
|
|
# if valid_ip IP_ADDRESS; then echo good; else echo bad; fi
|
|
#
|
|
function valid_ip()
|
|
{
|
|
local ip=$1
|
|
local stat=1
|
|
|
|
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
|
OIFS=$IFS
|
|
IFS='.'
|
|
ip=($ip)
|
|
IFS=$OIFS
|
|
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
|
|
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
|
|
stat=$?
|
|
fi
|
|
return $stat
|
|
}
|
|
|
|
if valid_ip $iface; then
|
|
echo "$iface is Valid IP Address. Checking for connectivity..."
|
|
ping -c 1 $iface >& /dev/null
|
|
while [ "$?" != "0" ]; do
|
|
ping -c 1 $iface >& /dev/null
|
|
done
|
|
echo "$iface connectivity achieved at `date`, Seconds = $SECONDS"
|
|
|
|
else
|
|
|
|
echo "Waiting for Interface $iface to come up..."
|
|
while true; do var=`ifconfig $iface` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done
|
|
echo "$iface is now available at `date` , Seconds = $SECONDS"
|
|
fi
|
|
|
|
|
|
#if [ -n "$ip_client" ]; then
|
|
#echo "Waiting for route to be setup before iperf makes connection..."
|
|
# var=`route -n | grep $ip_client`
|
|
# if ["$var" != "" ] ; then break; fi
|
|
#
|
|
#fi
|
|
|
|
echo "Sleeping for additional $timeout seconds"
|
|
sleep $timeout
|
|
|
|
echo "Starting iperf at `date` , Seconds = $SECONDS ...."
|
|
iperf ${iperf_args[@]}
|