Inhaltsverzeichnis

Massen Reset von Ruckus Access Point

Für ein massenhaften Reset von Ruckus AP welche über ein ZD verwaltet werden habe ich hier eine kleines Script geschrieben.

Funktion

Das Script arbeitet eine Liste mit den IP-Adressen der AP einzeln ab. Dafür Verbindet sich das Script mit dem Access Point und führt drei Befehle aus und zwar folgende:

Das Script ist darauf ausgelegt, dass man sich noch nie per SSH mit dem AP verbunden hat. Falls dies jedoch der Fall wäre, muss man den Betroffen Abschnitt in der Datei „~.ssh/known_hosts“ entfernt werden. Das Passwort und der Benutzername sind identisch wie die Anmeldedaten im ZD. Falls im Passwort das „$“-Zeichen beinhaltet, kann dies mit „\“ negiert werden.

Quelldaten

#!/usr/bin/env bash

##########################################################################################
#Script Name    : net_scann                                                              #
#Description    : Bashscript for reset ruckus access point per ssh                       #
#Author         : Gregor Holzfeind                                                       #
#Email          : gholzfeind@heiniger-ag                                                 #
#License        : GNU General Public License v3.0                                        #
#Version        : 0.1                                                                    #
##########################################################################################

##########################################################################################
# History                                                                                #
# Version               Datum                   Änderungen                               #
# 0.1                   06.07.2020              Basis-Script                             #
##########################################################################################

#Variable not editabel
var_username='admin' #User
var_password='admin' #Passwort from user

#Variable editabel
var_list_ap="test.csv" #liste withe ip-address of ap's

#function

#system check
func_sys_check() {
        var_check_expect=$(which expect)
        var_check_spawn=$(which spawn)
        check_qrencode=$(which qrencode)
        if [ "$var_check_expect" == "/usr/bin/expect" ]
        then
                var_exp_test="1"
        else
                var_exp_test="0"
        fi
        if [ "$var_check_spawn" == "/usr/bin/spawn" ]
        then
                var_spawn_test="1"
        else
                var_spawn_test="0"
        fi
        if [ "$var_exp_test" == "1" ] && [ "$var_spawn_test" == "1" ]
        then
                echo "Prüfung erfolgreich" > l
        else
                if [ "$var_exp_test" == "0" ]
                then
                        var_test_exp="- expect\n"
                else
                        var_test_exp=""
                fi
                if [ "$var_spawn_test" == "0" ]
                then
                        var_test_spawn="- spawn\n"
                else
                        var_test_spawn=""
                fi
                echo -e "Es fehlen folgend(e) Programm(e):\n$var_test_exp$var_test_spawn\nBitte installieren Sie die Programme!"
        fi
}


#access point reset
function func_ap_reset() {
    expect <<DONE
    spawn ssh $var_ipaddress ;#SSH-Login
    expect "The*" ;
    send "yes\r" ;#ssh-key accept
    expect "Ple*"
    send "$var_username\r" ;#userlogin
    expect "* "
    send "$var_password\r" ;#send userpassword
    expect "rkscli:*"
    send "set factory\r" ;#Factory Reset
    expect "*"
    send "reboot\r" ;#AP reboot
    expect "*"
    send "exit\r" ;#leave ssh connection
    expect eof
DONE
}

#Programm

#func_sys_check
while read -r var_ipaddress
do
    func_ap_reset
    sleep 5
done < $var_list_ap