6.2. Onboarding Backend (PaAn)
6.2.1. Speicherung der Daten
Die eingegebenen Daten auf der Onboarding-screen Webseite werden in einer Konfigurationsdatei onboarding-config.json gespeichert. Diese Datei wurde von einem OnboardingConfig Objekt erzeut, also eine Instanz von einer Klasse OnboardingConfig(siehe Abbildung zur Onboarding Klasse). Am Anfang beim ersten Hochfahren des Gerätes ist die Datei onboarding-config.json leer und die Startseite wird aufgerufen. Beim Aufruf von dieser Seite, wird überprüft, ob die Datei leer ist oder nicht. Falls die Datei leer ist, wird auf der Onboarding-screen Seite weitergeleitet. Wenn diese Onboarding-screen Seite aufgerufen wurde, dann wird eine neue Instanz der Klasse OnboardingConfig ausgeführt. Dieses instanziierte Objekt wird als globale Variable deklariert sein.
6.2.2. Umsetzung der festen IP Adresse
Für die automatische Ausfüllung des Formulars auf der Onboarding-screen Webseite in der Kategorie Netzwerk Einstellung, sollte zuerst der Name der aktuellen aktiven Ethernet Netzwerk Schnittstelle auf der Debian Betriebssystem gelesen werden mit dem Linux ip Kommando in dem folgenden Code Beispiel. In diesem Beispiel heißt die Netzwerk Schnittstelle enp0s3:
ip route | grep "^default" | awk '{print $5}'
> enp0s3
Wenn die Netzwerk Schnittstelle bekannt ist, wird die IP Adresse auf dieser Schnittstelle gelesen. Die vorgeschlagenen Gateway- und DNS-Adressen kann man auch mit dem Linux IP Kommando bekommen:
ip route | grep "^default" | awk '{print $3}'
> 10.0.2.2
Die oben genannten Netzwerkdaten werden bei der Instanziierung der Klasse LocalIpConfig (siehe Abbildung zur LocalIpConfig Klasse) initialisiert. Diese Klasse benutzt ein eigenes geschriebenes Modul ip.
Diese Daten können über eine öffentliche api erreichbar sein
URL |
HTTP Methode |
Beschreibung |
Methode |
---|---|---|---|
/api/network/local |
GET |
Die lokale Netzwerk Einstellung auf dem Gerät wird gelesen und als localIpConfig json Datenformat zurückgegeben |
getLocalIpConfig() |
Für das Setzen von dem statischen bzw. festen IP Adresse, wird das schon vorinstallierte debian Paket NetworkManager verwendet. Mit dem NetworkManager ist die Konfiguration des Netzwerkes sehr einfach. Er kann über eine Kommandozeile aufgerufen werden. Das Kommandozeilenwerkzeug (tool) dazu, für die Steuerung vom NetworkManager, heißt nmcli.
Man braucht vier Schritte, um die feste IP Adresse erfolgreich zu setzen.
Schritt 1:
sudo nmcli dev status | grep enp0s3 | awk '{s=""; for(i=4;i<=NF;i++){s=s " "$i} print s}'
> Wired connection 1
Der Codeblock zeigt, wie der Netzwerkverbindungsname erkannt wird, falls zum Beispiel die aktuelle aktive Netzwerkschnittstelle enp0s3 heißt.
In diesem Beispiel heißt der Netzwerkverbindungsname Wired connection 1.
Schritt 2:
Änderung der Netzwerkeinstellung für den erkannten Netzwerkverbindungsname auf eine statische IP Adresse mit den eingegebenen Daten aus der Onboarding-screen-Formular-Webseite:
sudo nmcli con mod "Wired connection 1" \
ipv4.addresses "{ip_address}" \
ipv4.gateway "{gateway}" \
ipv4.dns "{dns}" \
ipv4.method "manual"
Schritt 3:
Trennen und Wiederverbinden der Netzwerkschnittstelle:
sudo nmcli dev disconnect enp0s3
sudo nmcli dev connect enp0s3
Schritt 4:
Neustart des NetworkManagers:
sudo systemctl restart NetworkManager
6.2.3. Gerät Name
Beim Aufruf der Onboarding-screen Webseite wird auch der aktuelle Name des Gerätes gelesen, der dem hostname des Livesystems entspricht. Dieser Name kann sehr einfach mit der folgenden Linux Kommandozeile erkannt werden.
cat /etc/hostname
> debian64
Wenn der Lehrer der vorgeschlagene Gerät Name ändern wollte, dann wird die weitere folgende Kommandozeile ausgeführt.
sudo hostnamectl set-hostname {new_hostname}
6.2.4. Laufzeitsicht
Diese Sicht visualisiert , wie die verschiedene Teile zusammenspielen.