PSK auf mehreren LANCOM Access Points per SSH synchron setzen

In Computer und Netzwerk | Erstellt: 11.02.2015, 12:56 | Editiert: 25.10.2018, 16:01 | 2.404 mal angesehen | Seite drucken

Ein WLAN-Controller für Arme: Gerüst für ein Shell-Skript, das den PSK eines (logischen) WLANS auf mehreren APs setzt.

Achtung: $table_content muss beim Zurückschreiben den bisherigen Inhalt der Tabelle plus den neuen PSK enthalten. Vor dem Start des Skripts den Inhalt auslesen und das Skript anpassen.

Auch überprüfen, ob das richtige logische WLAN angegeben wurde (Im Skript WLAN-1-2). In Meinem Fall ist das 1. WLAN das Firmen-WLAN (WLAN-1, Default VLAN), das Gäste-WLAN das logische 2. WLAN (WLAN-1-2, VLAN ID 66).

Das Bash-Skript:

#!/bin/bash
# Zweck:
#
# set_psk_guest-wlan.sh
#
# ---------------------------------------------------------------
#         PSK für WLAN-1 ("xxxxx-gast") auf allen $targets setzen.
#
# Benötigt:
# ---------------------------------------------------------------
#         Öffentlichen DSA-Schlüssel von root auf LANCOM-Access 
#         Point in "authorized_keys", um SSH-Login ohne Passwort 
#         per SSH-Key zu ermöglichen.
#
# Führt aus:
# ---------------------------------------------------------------
#        Aktualisiert Einstellungs-Tabelle auf AP unter:
#        /Setup/Interfaces/WLAN/Encryption/WLAN-1
#

# Datum
# ---------------------------------------------------------------
date_today=`date +"%Y-%m-%d %H:%M:%S"`

# User
# ---------------------------------------------------------------
user="root"

# Ziele
# ---------------------------------------------------------------
targets="192.168.40.a 192.168.40.b 192.168.40.c 192.168.40.d"

# Kommandozeilen-Parameter #1: Neuer PSK
# ---------------------------------------------------------------
psk=$1

# PSK Prüfen
# ---------------------------------------------------------------
if [ "$1" == "" ]; then
   # Kein Parameter übergeben
   echo "Benutzung: $0 [Neuer_PSK]"
   echo
   echo "Vorschlag: http://psk.onderka.com/"
   echo
   exit 1
fi

# Update-Kommando mit neuem PSK konstruieren
# ---------------------------------------------------------------
# LANCOM Config-Tabelle des logischen WLANs (Hier WLAN-1-2)
table_name="/Setup/Interfaces/WLAN/Encryption/WLAN-1-2"
# Achtung: Aktuelle Werte der Tabelle erst auslesen!
table_content="Yes 1 802.11i-WPA-PSK \"${psk}\" WPA2 TKIP/AES TKIP/AES 600 TLS Open-System"
command="set ${table_name} ${table_content}"

# Sicherheitsabfrage
# ---------------------------------------------------------------
read -n1 -p "PSK für Gäste-WLAN wirklich auf '${psk}' setzen? (j/n) "
antwort=$REPLY
echo
if [ ! "$antwort" == "j" ] && [ ! "$antwort" == "J" ]; then
   # Kein "j" oder "J"
   echo "Abbruch"
   echo
   exit 1;
fi

echo

# Fehlerzähler
# ---------------------------------------------------------------
errorcounter=0
apcounter=0

# Access Points abarbeiten
# ---------------------------------------------------------------
for accesspoint in $targets; do
   apcounter=`expr $apcounter + 1`
   # Ausgabe
   echo -n "Setze neuen PSK auf Access Point $accesspoint ... "
   # Update durchführen
   ssh root@${accesspoint} $command &> ./wlan_keychange_${accesspoint}.log
   # Rückgabewert prüfen
   okstring=`grep "set ok:" ./wlan_keychange_${accesspoint}.log`
   if [ "$okstring" != "" ]; then
      # String "set ok:" enthalten
      echo "OK"
   else
      # String "set ok:" nicht enthalten
      errorcounter=`expr ${errorcounter} + 1`
      echo "ERROR"
   fi
done
echo

# Fehler?
# ---------------------------------------------------------------
echo Insgesamt ${apcounter} Access Points aktualisiert - ${errorcounter} Fehler.
echo "${date_today}: ${psk}" >> ./psk_guest-wlan.log

# Ende
# ---------------------------------------------------------------
echo

Weitere Seiten in 'Computer und Netzwerk'

Schreibe einen Kommentar

Captcha * Time limit is exhausted. Please reload CAPTCHA.