mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-30 18:27:53 +00:00 
			
		
		
		
	 72712ff548
			
		
	
	72712ff548
	
	
	
		
			
			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
 |