mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-11-04 04:38:02 +00:00 
			
		
		
		
	These scripts will now be publicly available in a git repo for easier shared development and change tracking.
		
			
				
	
	
		
			159 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### #####
 | 
						|
##                                                                         ##
 | 
						|
## Use this script to associate stations between SSIDs A and B             ##
 | 
						|
##                                                                         ##
 | 
						|
## Install this script in /home/lanforge                                   ##
 | 
						|
## Usage: ./associate_loop -m localhost -r 1 -a SSIDA -b SSIDB -n 10 -i 5  ##
 | 
						|
##   -w wiphy0 -s sta1,sta2,sta3,sta4,sta5,sta6,sta7,sta8,sta9,sta10       ##
 | 
						|
##                                                                         ##
 | 
						|
##                                                                         ##
 | 
						|
##                                                                         ##
 | 
						|
##                                                                         ##
 | 
						|
##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### #####
 | 
						|
Q='"'
 | 
						|
A="'"
 | 
						|
#set -e
 | 
						|
#set -x
 | 
						|
usage="$0 -m localhost -r 1 -w wiphy0 -s sta1,sta2...<max> -a SSIDA -b SSIDB -n <seconds> -i <iterations>
 | 
						|
 -m: manager ip address
 | 
						|
 -r: resourse id
 | 
						|
 -w: radio name for stations
 | 
						|
 -s: station list, comma separated (no spaces)
 | 
						|
 -a: first ssid
 | 
						|
 -b: second ssid
 | 
						|
 -n: naptime in seconds
 | 
						|
 -i: iteration to loop
 | 
						|
 | 
						|
Associate one station (sta1) for 1 second, 10 iterations:
 | 
						|
   $0 -m localhost -r 1 -w wiphy0 -s sta1,wlan1 -a testap1 -b testap2 -n 1 -i 10
 | 
						|
 | 
						|
Associate ten stations (sta105..sta109) for 5 seconds, indefinitely:
 | 
						|
   stations=\`seq -f 'sta%g' -s, 105 109\`
 | 
						|
   $0 -m 192.168.101.1 -r 2 -w wiphy1 -s \$stations -a testap1 -b testab2 -n 5 -i 0
 | 
						|
 | 
						|
Hit control-c to stop.
 | 
						|
"
 | 
						|
modscript=""
 | 
						|
if [ -f "lf_firemod" ]; then
 | 
						|
   modscript="./lf_firemod.pl"
 | 
						|
elif [ -f "/home/lanforge/scripts/lf_firemod.pl" ]; then
 | 
						|
   modscript="/home/lanforge/scripts/lf_firemod.pl"
 | 
						|
fi
 | 
						|
cd /home/lanforge/scripts
 | 
						|
 | 
						|
[ -z "$modscript" ] && {
 | 
						|
   echo "script [$modscript] not present, please use this script from /home/lanforge or /home/lanforge/scripts"
 | 
						|
   exit 1
 | 
						|
}
 | 
						|
 | 
						|
infinite=0
 | 
						|
while getopts ":a:b:i:m:n:r:s:w:" opt ; do
 | 
						|
   case $opt in
 | 
						|
      a) SSIDA="$OPTARG"      ;;
 | 
						|
      b) SSIDB="$OPTARG"      ;;
 | 
						|
      i) iterations="$OPTARG" ;;
 | 
						|
      m) manager="$OPTARG"    ;;
 | 
						|
      n) naptime="$OPTARG"    ;;
 | 
						|
      r) resource="$OPTARG"   ;;
 | 
						|
      s) stations="$OPTARG"   ;;
 | 
						|
      w) wiphy="$OPTARG"      ;;
 | 
						|
   esac
 | 
						|
done
 | 
						|
[ -z "$stations" ] && {
 | 
						|
   echo "-s: stations, requires {begin,...end} for stations;"
 | 
						|
   echo "$usage"
 | 
						|
   exit 1
 | 
						|
}
 | 
						|
 | 
						|
sta_start=0
 | 
						|
sta_end=0;
 | 
						|
IFS="," sta_hunks=($stations);
 | 
						|
unset IFS
 | 
						|
#if [ ${#sta_hunks[@]} -gt 1 ] ; then
 | 
						|
#   sta_start=${sta_hunks[0]}
 | 
						|
#   sta_end=${sta_hunks[1]}
 | 
						|
#else
 | 
						|
#   sta_start=${sta_hunks[0]}
 | 
						|
#   sta_end=${sta_hunks[0]}
 | 
						|
#fi
 | 
						|
 | 
						|
[ -z "$naptime" ] && {
 | 
						|
   echo "-n: naptime required: seconds between changing ssids"
 | 
						|
   echo "$usage"
 | 
						|
   exit 1
 | 
						|
}
 | 
						|
 | 
						|
[ -z "$iterations" ] && {
 | 
						|
   echo "-i: iterations to switch ssids"
 | 
						|
   echo "$usage"
 | 
						|
   exit 1
 | 
						|
}
 | 
						|
 | 
						|
[ $iterations -lt 0 ] && {
 | 
						|
   echo "-i: positive number of iterations only, please"
 | 
						|
   exit 1;
 | 
						|
}
 | 
						|
 | 
						|
[ $iterations -eq 0 ] && {
 | 
						|
   echo "Infinite iterations selected."
 | 
						|
   infinite=1;
 | 
						|
}
 | 
						|
 | 
						|
[ -z "$SSIDB" ] && {
 | 
						|
   echo "-b: SSID B required"
 | 
						|
   echo "$usage"
 | 
						|
   exit 1
 | 
						|
}
 | 
						|
 | 
						|
[ -z "$SSIDA" ] && {
 | 
						|
   echo "-a: SSID A required"
 | 
						|
   echo "$usage"
 | 
						|
   exit 1
 | 
						|
}
 | 
						|
 | 
						|
[ -z "$resource" ] && {
 | 
						|
   echo "-r: resource number for radio owning the station to modify"
 | 
						|
   echo "$usage"
 | 
						|
   exit 1
 | 
						|
}
 | 
						|
 | 
						|
[ -z "$wiphy" ] && {
 | 
						|
   echo "-w: wiphy radio owning the station"
 | 
						|
   echo "$usage"
 | 
						|
   exit 1;
 | 
						|
}
 | 
						|
 | 
						|
[ -z "$manager" ] && {
 | 
						|
   echo "-m: ip address of LANforge manager "
 | 
						|
   echo "$usage"
 | 
						|
   exit 1;
 | 
						|
}
 | 
						|
use_ssid=0 # 0 := a, 1 := b
 | 
						|
while [ $infinite == 1 -o $iterations -ge 0 ] ; do
 | 
						|
   for sta in "${sta_hunks[@]}"; do
 | 
						|
      if [ $use_ssid == 0 ]; then
 | 
						|
         newssid=$SSIDA
 | 
						|
      else
 | 
						|
         newssid=$SSIDB
 | 
						|
      fi
 | 
						|
      [ -z "$wiphy" ] && {
 | 
						|
         echo "radio unconfigured, error."
 | 
						|
         exit 1
 | 
						|
      }
 | 
						|
      clicmd="add_sta 1 $resource $wiphy $sta NA $newssid"
 | 
						|
      $modscript --quiet yes --mgr $manager --resource $resource --action do_cmd --cmd "$clicmd"
 | 
						|
      sleep 0.05
 | 
						|
   done
 | 
						|
 | 
						|
   if [ $use_ssid = 1 ]; then
 | 
						|
      use_ssid=0;
 | 
						|
   else
 | 
						|
      use_ssid=1;
 | 
						|
   fi
 | 
						|
   iterations=$(($iterations - 1))
 | 
						|
   sleep $naptime
 | 
						|
done
 | 
						|
 | 
						|
#eof
 |