mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-10-28 17:32:35 +00:00
213 lines
6.6 KiB
Bash
Executable File
213 lines
6.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script is an attempt to simplify the creation of stations and connections for said stations.
|
|
# One UDP connection will be created for each station.
|
|
# The number of stations, station SSID, encryption type and passphrase, number of packets to send, and transmit rates
|
|
# can all be configured with the below options.
|
|
# Required values are SSID, radio, and upstream port.
|
|
# Note: The upstream port will be designated to Endpoint A and station to Endpoint B.
|
|
# -m Manager IP or hostname.
|
|
# -r Resource number.
|
|
# -w Which radio to use i.e. wiphy0 wiphy1 etc.
|
|
# -n Number of stations to create.
|
|
# -s SSID for stations.
|
|
# -e Encryption type: open|wep|wpa|wpa2.
|
|
# -k Passphrase for when AP is encrypted.
|
|
# -a The upstream port to which station(s) will connect.
|
|
# -A Transmit rate from upstream port.
|
|
# -B Transmit rate from station.
|
|
# -p Number of default UDP sized packets to send.
|
|
# -h Help information.
|
|
|
|
# Example usage:
|
|
# ./lf_wifi_fire.bash -m lf0350-1234 -r 1 -w wiphy0 -n 40 -s test-SSID -e wpa2 -k hello123 -a eth1 -A 56000 -B 2000000 -p 10000
|
|
|
|
set -e
|
|
#set -u
|
|
set -o pipefail
|
|
|
|
clilog="--log_cli /tmp/clilog.txt"
|
|
|
|
#default values
|
|
mgr=localhost
|
|
resource=1
|
|
num_stas=40
|
|
num_packets=Infinite
|
|
encryption=open
|
|
passphrase='[BLANK]'
|
|
rate_A=1000000
|
|
rate_B=1000000
|
|
|
|
#other variables
|
|
first_sta=100
|
|
flag_radio=false
|
|
flag_ssid=false
|
|
flag_port=false
|
|
|
|
show_help="This script is an attempt to simplify the creation of stations and connections for said stations.
|
|
One UDP connection will be created for each station.
|
|
The number of stations, station SSID, encryption type and passphrase, number of packets to send, and transmit rates
|
|
can all be configured with the below options.
|
|
Required values are SSID, radio, and upstream port.
|
|
Note: The upstream port will be designated to Endpoint A and station to Endpoint B.
|
|
-m Manager IP or hostname.
|
|
-r Resource number.
|
|
-w Which radio to use i.e. wiphy0 wiphy1 etc.
|
|
-n Number of stations to create.
|
|
-s SSID for stations.
|
|
-e Encryption type: open|wep|wpa|wpa2.
|
|
-k Passphrase for when AP is encrypted.
|
|
-a The upstream port to which station(s) will connect.
|
|
-A Transmit rate from upstream port.
|
|
-B Transmit rate from station.
|
|
-p Number of default UDP sized packets to send.
|
|
-h Help information.
|
|
|
|
Example usage:
|
|
./lf_wifi_fire.bash -m lf0350-1234 -r 1 -w wiphy0 -n 40 -s test-SSID -e wpa2 -k hello123 -a eth1 -A 56000 -B 2000000 -p 10000"
|
|
|
|
while getopts 'm:r:n:p:a:e:k:w:s:A:B:h' OPTION; do
|
|
case "$OPTION" in
|
|
m)
|
|
#manager
|
|
mgr="$OPTARG"
|
|
;;
|
|
r)
|
|
#resource
|
|
resource="$OPTARG"
|
|
;;
|
|
n)
|
|
#num stations
|
|
num_stas="$OPTARG"
|
|
;;
|
|
p)
|
|
#packets
|
|
num_packets="$OPTARG"
|
|
;;
|
|
a)
|
|
#upstream port
|
|
flag_port=true
|
|
port_A="$OPTARG"
|
|
;;
|
|
e)
|
|
#encryption
|
|
encryption="$OPTARG"
|
|
;;
|
|
k)
|
|
#encryption passphrase
|
|
passphrase="$OPTARG"
|
|
;;
|
|
w)
|
|
#radio
|
|
flag_radio=true
|
|
radio="$OPTARG"
|
|
;;
|
|
s)
|
|
#ssid
|
|
flag_ssid=true
|
|
ssid="$OPTARG"
|
|
;;
|
|
A)
|
|
#transmit rate for endpoint A
|
|
rate_A="$OPTARG"
|
|
;;
|
|
B)
|
|
#transmit rate for endpoint B
|
|
rate_B="$OPTARG"
|
|
;;
|
|
h)
|
|
#send help message
|
|
echo "$show_help"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
shift "$(($OPTIND -1))"
|
|
|
|
#check for required getopts
|
|
if [ "$flag_ssid" = false ] || [ "$flag_radio" = false ] || [ "$flag_port" = false ] ;
|
|
then
|
|
echo "Please provide at minimum the upstream port (-a), ssid (-s), and radio (-w). Run the script with -h for more information."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Deleting old stations."
|
|
./lf_associate_ap.pl --mgr $mgr --resource $resource $clilog --action del_all_phy --port_del $radio
|
|
|
|
./lf_firemod.pl --mgr $mgr --resource $resource --quiet yes --action do_cmd $clilog \
|
|
--cmd "nc_show_ports 1 $resource all 1" &>/dev/null
|
|
|
|
sleep 2
|
|
|
|
echo "Creating new stations."
|
|
# this command is too limited to be useful for creating roaming stations at the moment
|
|
#./lf_associate_ap.pl --mgr $mgr --resource $resource $clilog \
|
|
# --ssid $ssid --security $encryption --passphrase $passphrase \
|
|
# --num_stations $num_stas --first_sta "sta$first_sta" \
|
|
# --first_ip DHCP --radio $radio --action add --xsec use-dot1x
|
|
|
|
#sleep 2
|
|
|
|
key_mgt="WPA-EAP"
|
|
pairwise="CCMP"
|
|
group="CCMP"
|
|
psk=NA
|
|
key=NA
|
|
ca_cert="/home/lanforge/apu2-a-ca.pem"
|
|
eap="TLS"
|
|
identity="lanforge@lanforge.com"
|
|
anon_id=NA
|
|
phase1=NA
|
|
phase2=NA
|
|
eap_passwd=NA
|
|
pin=NA
|
|
pac_file=NA
|
|
private_key="/home/lanforge/apu2-a-client.p12"
|
|
pk_passwd="lanforge"
|
|
hessid=NA
|
|
realm=NA
|
|
client_cert=NA
|
|
imsi=NA
|
|
milenage=NA
|
|
domain=NA
|
|
roaming_consortium=NA
|
|
venue_group=NA
|
|
venue_type=NA
|
|
network_type=NA
|
|
ipaddr_type_avail=NA
|
|
network_auth_type=NA
|
|
anqp_3gpp_cell_net=NA
|
|
|
|
for n in `seq $first_sta $(($first_sta -1 + $num_stas))` ; do
|
|
./lf_firemod.pl --mgr $mgr --resource $resource $clilog --action do_cmd --cmd \
|
|
"add_sta 1 8 wiphy0 sta$n 2181039104 'ja2a-8021x' NA [BLANK] DEFAULT NA 00:0e:8e:41:0d:47 8 NA NA NA NA NA 2181039104"
|
|
|
|
./lf_firemod.pl --mgr $mgr --resource $resource $clilog --action do_cmd --cmd \
|
|
"set_port 1 8 sta100 0.0.0.0 255.255.0.0 NA NA 1424969217212417 '00 0e 8e 03 32 47' NA NA BLANK 8548171820 8000 0 65535 4294967295 -1 -1 -1 -1 255 AUTO AUTO AUTO NA 0 192.168.100.1 0 NONE 9007199254740992 NONE"
|
|
|
|
./lf_firemod.pl --mgr $mgr --resource $resource $clilog --action do_cmd --cmd \
|
|
"set_wifi_extra 1 $resource sta$n $key_mgt $pairwise $group $psk $key $ca_cert $eap $identity $anon_id $phase1 $phase2 $eap_passwd $pin $pac_file $private_key $pk_passwd $hessid $realm $client_cert"
|
|
done
|
|
|
|
bssid1="00:0e:8e:14:08:da"
|
|
bssid2="00:0e:8e:2e:84:19"
|
|
|
|
#roam commands: see http://ctlocal/lfcli_ug.php#wifi_cli_cmd
|
|
for n in `seq $first_sta $(($first_sta -1 + $num_stas))` ; do
|
|
# roam to bssid1
|
|
./lf_firemod.pl --mgr $mgr --resource $resource $clilog --action do_cmd --cmd \
|
|
"wifi_cli_cmd 1 $resource sta$n 'roam $bssid1'"
|
|
sleep 2 # your sleep interval here should match the report timer you set in the GUI
|
|
# scanning the port before it reports will probably result in stale (previous to roam) data
|
|
# this is the point you do a 'nc_show_port 1 $resource sta$n' and grep for BSSID
|
|
# roam to bssid2
|
|
./lf_firemod.pl --mgr $mgr --resource $resource $clilog --action do_cmd --cmd \
|
|
"wifi_cli_cmd 1 $resource sta$n 'roam $bssid2'"
|
|
sleep 2 # your sleep interval here should match the report timer you set in the GUI
|
|
# scanning the port before it reports will probably result in stale (previous to roam) data
|
|
# this is the point you do a 'nc_show_port 1 $resource sta$n' and grep for BSSID
|
|
|
|
done
|
|
|
|
#
|