Benutzer-Werkzeuge

Webseiten-Werkzeuge


de.bkp:intern:ipa:sk2023:ipa_sk2023

IPA-Bericht

Switch Monitoring

Dietikon,
27. April bis 12. Mai 2023

Autor: Silas Kägi

Hauptexpert: Carlo Pirola
Nebenexpert: Daniel Zuck
Berufsbildner: Rudolf Wegelin
Verantwortliche Fachkraft: Stefan Kuhn

Inhaltsverzeichnis

1 Umfeld und Ablauf [[#umfeld-und-ablauf|5]]

1.1 Ausganslage [[#ausganslage|5]]

1.2 Detaillierte Aufgabenstellung [[#detaillierte-aufgabenstellung|5]]

1.3 Projektorganistation [[#projektorganistation|9]]

1.4 Mittel und Methoden [[#mittel-und-methoden|9]]

1.5 Vorkenntnisse [[#vorkenntnisse|10]]

1.6 Vorarbeiten [[#vorarbeiten|10]]

1.7 Projektmanagment Methode [[#projektmanagment-methode|11]]

1.8 Firmenstandards [[#_Toc134744120|11]]

1.9 Dokumentenablage [[#dokumentenablage|11]]

1.10 Zeitplan [[#zeitplan|12]]

1.11 Arbeitsjournale [[#arbeitsjournale|13]]

1.11.1 Arbeitsjournal 27.04.2023 [[#arbeitsjournal-27.04.2023|13]]

1.11.2 Arbeitsjournal 28.04.2023 [[#arbeitsjournal-28.04.2023|15]]

1.11.3 Arbeitsjournal 02.05.2023 [[#arbeitsjournal-02.05.2023|17]]

1.11.4 Arbeitsjournal 03.05.2023 [[#arbeitsjournal-03.05.2023|19]]

1.11.5 Arbeitsjournal 04.05.2023 [[#arbeitsjournal-04.05.2023|21]]

1.11.6 Arbeitsjournal 05.05.2023 [[#arbeitsjournal-05.05.2023|23]]

1.11.7 Arbeitsjournal 09.05.2023 [[#arbeitsjournal-09.05.2023|24]]

1.11.8 Arbeitsjournal 10.05.2023 [[#arbeitsjournal-10.05.2023|25]]

1.11.9 Arbeitsjournal 11.05.2023 [[#arbeitsjournal-11.05.2023|26]]

1.11.10 Arbeitsjournal 12.05.2023 [[#arbeitsjournal-12.05.2023|27]]

2 Projekt Dokumentation [[#projekt-dokumentation|28]]

2.1 Kurzfassung [[#kurzfassung|28]]

2.1.1 Ausgangssituation [[#ausgangssituation|28]]

2.1.2 Umsetzung [[#umsetzung|28]]

2.1.3 Ergebnis [[#ergebnis|28]]

2.2 Informieren [[#informieren|29]]

2.2.1 Switch Befehle [[#switch-befehle|29]]

2.2.2 Rückfragen [[#rückfragen|30]]

2.3 Planen [[#planen|31]]

2.3.1 Use Case [[#use-case|31]]

2.3.2 Systemgrenze [[#systemgrenze|32]]

2.3.3 Komponentendiagramm [[#komponentendiagramm|32]]

2.3.4 Aktivitätsdiagramme [[#aktivitätsdiagramme|34]]

2.3.5 Sequenzdiagramme [[#sequenzdiagramme|37]]

2.3.6 Wireframe Admin Panel [[#wireframe-admin-panel|38]]

2.3.7 Testkonzept [[#testkonzept|39]]

2.4 Entscheiden [[#entscheiden|43]]

2.4.1 Framework [[#framework|43]]

2.4.2 Software [[#software|43]]

2.5 Realisieren [[#realisieren|43]]

2.5.1 Konfigurationsdateien [[#konfigurationsdateien|43]]

2.5.2 Regex [[#regex|43]]

2.5.3 APIs [[#apis|43]]

2.5.4 Switch Infos abfragen [[#switch-infos-abfragen|44]]

2.5.5 Switch Response parsen [[#switch-response-parsen|44]]

2.5.6 Start Skript Funktion [[#start-skript-funktion|46]]

2.5.7 History Funktion [[#history-funktion|46]]

2.5.8 Fremder Code [[#fremder-code|46]]

2.6 Kontrollieren [[#kontrollieren|47]]

2.6.1 Test Benutzerhandbuch [[#test-der-bedienungsanleitung|47]]

2.6.2 Testprotokolle manuel testing [[#testprotokolle-manual-testing|47]]

2.7 Auswerten [[#auswerten|51]]

2.7.1 Weiterentwicklungsmöglichkeiten [[#weiterentwicklungsmöglichkeiten|51]]

2.7.2 Reflexion [[#reflexion|52]]

2.7.3 Schlusswort [[#schlusswort|52]]

3 Anhang [[#anhang|53]]

3.1 Versionierung Git Log [[#versionierung-git-log|53]]

4 Glossar [[#glossar|53]]

5 Literaturverzeichnis [[#_Toc134744172|53]]

6 Abbildungsverzeichnis [[#abbildungsverzeichnis|53]]

7 Tabellenverzeichnis [[#tabellenverzeichnis|54]]

8 Codeverzeichnis [[#codeverzeichnis|55]]

Umfeld und Ablauf

Ausganslage

In der Rafisa Informatik GmbH werden zurzeit 90 Lernende der Fachrichtungen Applikationsentwicklung, ICT-Fachmann/Fachfrau, Systemtechnik und Betriebsinformatik sowie Plattformentwicklung zu InformatikerInnen EFZ ausgebildet. Neben dem regulären Ausbildungsbetrieb bietet die Rafisa auch Eignungsabklärungen, Arbeitstrainings, Vorbereitungen für eine Informatik-Ausbildung sowie Bewerbungs- und Job-Coachings an. Als zentrale Dokumentationsplattform dient der internen Systemtechnik das auf DokuWiki basierende Rafisa-Wiki. In diesem Wiki werden sämtliche technischen und organisatorischen Aspekte der Rafisa-Infrastruktur festgehalten. Eine der grössten Herausforderungen für die Systemtechnik besteht im übersichtlichen Dokumentierender vielen und sich stetig verändernden VLAN-Zuordnungen auf den Netzwerkgeräten. Bisher wurden die Switches über manuelle CMD Befehle ausgelesen und im DokuWiki Switch-Panel Syntax festgehalten. In der vorliegenden Arbeit soll dieser Prozess mittels einer Applikation automatisiert werden. Das Ziel besteht darin, wichtige Parameter der VLAN-Belegung von den entsprechenden Netzwerkgeräten abzurufen und auf DokuWiki-Seiten übersichtlich darzustellen.

Detaillierte Aufgabenstellung

Ziel des zu realisierenden Systems

“Switch Panel” ist ein Plugin für die Wiki-Plattform DokuWiki. Mithilfe dieses Plugins lassen sich auf einer Wiki-Seite Diagramme von Netzwerk-Switches erstellen und diese mit Informationen zum Switch versehen. Das Ziel dieser Arbeit besteht in der Entwicklung einer Applikation, mit welcher automatisch Switch-Diagramme aller fünf Rafisa-Standorte erstellt, mit direkt von den Geräten abgerufenen technischen Informationen versehen und auf Wiki-Seiten übersichtlich dargestellt werden können(Info-Page). Die benötigten Konfigurations-Parameter soll die Applikation von entsprechend formatierten Wiki-Seiten abrufen (Config-Page). Die Software soll über ein Admin-Portal gestartet werden können (Admin-Page). Auf diesem Portal soll zusätzlich die Möglichkeit bestehen, eine History der an den Switches vorgenommenen Änderungen abzurufen.

Anforderungen

Backend:

Das Backend soll mit Python erstellt werden. Das Backend soll die Arbeit die bisher von Plattformentwicklern manuell erledigt wurde automatisieren.

Dazu gehören:

  • Abfragen der Switches
  • Aufbereitung und Zuordnung der Informationen
  • Eintrag der Informationen in Dokuwiki

Um die Erweiterbarkeit des Systems sicherzustellen sollen alle Prozesse als Funktionen abgebildet werden. Parameter die nicht von der «Config-Page» ausgelesen werden sollen am Anfang der Datei die die Funktion beinhaltet deklariert werden.

Frontend:

Das Frontend soll in die Dokuwiki plattform der Rafisa eingebettet werden. Gefordert sind die folgenden Seiten:

Info-Page

Auf der Info-Page oder den Info-Pages sollen Diagramme aller produktiven Switches der fünf Rafisa-Standorte übersichtlich dargestellt werden. Usability, Ästhetik und Design sollen sich an der bestehenden DokuWiki-Plattform orientieren. Die Switch-Diagramme sollen mit folgenden direkt von den Switches abgerufenen technischen Informationen versehen werden:

  • Firmware Version
  • VLAN-Belegung der Ports (PVID, Trunk, farbliche Markierung gemäss Firmenstandards)
  • Fehlerhaft konfigurierte Ports (z.B. Mehrfachbelegung bei Accessports, fehlende VLAN bei Trunks)
  • MAC-Adressen der an einen Port angeschlossenen Geräte

Config-Page

Die wichtigsten Parameter der Applikation sollen von einer entsprechend formatierten Wiki-Seite abgerufen werden. Über diese Seite soll die Plattformentwicklung festlegen können was auf welche Art dargestellt wird. Diese Seite ist so zu gestalten, dass mit DokuWiki vertraute AnwenderInnen die Eingaben in gewohnter Weise vornehmen können. Der Config-Page sollen folgende Informationen entnommen werden können:

  • PVID und Name der darzustellenden VLAN
  • Farbcodes der darzustellenden VLAN
  • IP-Adressen der darzustellenden Switches

Admin-Page

Die Admin-Page soll einen Knopf zum Updaten der Switch-Darstellungen enthalten.

Zusätzlich soll über das Portal eine Veränderungs-History abrufbar sein. Es sollen Felder für die Eingabe von Von-Bis-Daten (Datumsfeld) und Switch-Namen (Dropdown-Feld) vorhanden sein. Auf Grundlage der Eingaben müssen Veränderungen in folgenden Parametern ersichtlich werden:

  • Firmware-Version
  • VLAN-Belegung der Ports

Weiter sollen der Log der letzten Skriptausführung auf der Admin-Page einsehbar sein. Durch diesen Log soll einsehbar sein ob die letzte Ausführung erfolgreich war. Ist dies nicht der Fall, so soll eine Aussagekräftige Fehlermeldung angezeigt werden.

Dokumentation

Für die Wartbarkeit der Anwendung sollen folgende Diagramme nach UML 2.0 erstellt werden:

  • Use-Case
  • Activity-Diagramm

Ist bei einem Prozess der Nachrichtenfluss besonders relevant, so soll statt einem Activity-Diagramm ein Sequenzdiagramm benutzt werden. Explizit gefordert ist dies beim generieren der History für die Admin-Page.

Für die Plattformentwicklung soll zudem ein Benutzerhandbuch erstellt werden. Aus diesem soll die korrekte Verwendung der Config- und die Admin-Page entnommen werden können.

Die folgenden Themen sollen im Benutzerhandbuch abgehandelt werden:

Config pages

  • Navigation zur standortspezifischen Config-Page
  • Konfigurierung der folgenden Tabellen in der Config-Page:
    • PVID und Name der darzustellenden VLAN
    • Farbcodes der darzustellenden VLAN
    • IP-Adressen der darzustellenden Switches

Admin Panel

  • Manuelles starten der Diagrammgenerierung
  • History einsehen
  • Log einsehen

Allgemeines

  • Cron-Job
  • Einrichten von neuen Standorten
  • Verhalten bei Fehlermeldungen

Projektorganistation

Ein Bild, das Diagramm enthält. Automatisch generierte Beschreibung

Abbildung 1 Organisationsdiagramm

Mittel und Methoden

Zur Verfügung gestellte Systeme

Für die Entwicklung der Applikation stehen folgende Systeme zur Verfügung:

Hostname: mos-zh-01.rafisa.org
OS: Ubuntu 20.04 LTS
IP-Adresse: 172.16.1.160
Zugang: SSH

Hostname: gitlab.rafisa.net
OS: Ubuntu 22.04 LTS
IP-Adresse: 144.76.17.227
Zugang: SSH / HTTPS

Für die Config- und Info-Pages steht eine fertig eingerichtete Doku-Wiki-Plattform zur Verfügung (Vorarbeit):

Hostname: wikidev.rafisa.net
OS: Ubuntu 20.04 LTS
IP-Adresse: 138.201.126.13
Zugang: SSH / HTTPS

Die folgenden Technologien werden während der Arbeit verwendet:

Flask, Jetbrains Gateway (Pycharm), HTML & CSS, Python, Bash, Cron

Zum Erstellen der Diagramme wird das Switchpanel Plugin von Dokuwiki verwendet:

https://www.dokuwiki.org/plugin:switchpanel

Vorkenntnisse

Der Kandidat hat sich seit Dezember mit Dokuwiki, den Interfaces der Switches und den VLANs der Rafisa auseinandergesetzt.

Python ist bekannt aus Schulprojekten sowie einer kürzeren Arbeit innerhalb des Betriebs.

Vorarbeiten

  • eine Funktion, welche aus Parametern ein Diagramm für Dokuwiki erstellt wurde bereits erstellt.
  • Für die Zugriffe auf die Dokuwiki-Plattform und die Switches existiert ein Prototyp, der vom Kandidaten seit Dezember refactored wurde.

Projektmanagment Methode

Für die vorliegende IPA wurde die IPERKA Methode als Projektmanagement Methode ausgewählt. Die Einfachheit der Struktur dieser Methode eignet sich perfekt für die Länge der Arbeit und ermöglicht eine klare Dokumentation in separaten Kapiteln.

Dokumentenablage

Zur Versionierung wird das Firmeninterne Git (GitLab) der Rafisa Informatik GmbH verwendet. Es wird täglich mindestens ein Commit gemacht und die Erledigten Aufträge des Tages werden im Kommentar dazu aufgelistet.

Zeitplan

vertopal_0110219078394aabb58ccd49f460d746_media_image3.emf

vertopal_0110219078394aabb58ccd49f460d746_media_image4.emf

vertopal_0110219078394aabb58ccd49f460d746_media_image5.emf

vertopal_0110219078394aabb58ccd49f460d746_media_image4.emf

vertopal_0110219078394aabb58ccd49f460d746_media_image6.emf

Arbeitsjournale

Arbeitsjournal 27.04.2023

Tägliche Arbeiten (SOLL / IST)
* Aufgabenstellung analysieren (0.5h / 0.5h)
* Zusatzinformationen holen (0.5h / 0.5h)
* Switch Befehle suchen und dokumentieren (0.5h / 0.5h)
* Dokumentation erstellen (0.5h / 0.5h)
* Zeitplan erstellen (1h / 1h)
* Use Case Diagramm erstellen (0.5h / 0.5h)
* Systemgrenzen (0.5h / 0.5h)
* Komponentendiagramm erstellen (1.5h / 1.5h)
* Mit Aktivitätsdiagramm beginnen (2.5h / 2.5h)
Ungeplante Arbeiten
Keine
Erfolge
Ich konnte meine Tagesziele erreichen.
Die Aufgabenstellung sagt mir zu und ich habe begonnen im Kopf ein Konzept zurecht zu legen.
Misserfolge / Probleme
* Schultag vom 08. Mai ging in der Planung vergessen, Experte kontaktiert
* Aktivitätsdiagramm wird zu unübersichtlich und ich muss es aufteilen
* Leider habe ich nur eine ältere Version der Bedienungsanleitung für Firmware bis Version 4.30,- die Switches haben aber mehrheitlich Version 4.50.
Beanspruchte Hilfestellungen
Ich habe mein Verständnis bezüglich der VLAN Trunks von Herrn Rüefli bestätigen lassen, da ich ein kurzes Blackout hatte.
Vergleich mit Zeitplan
Bis jetzt gut in der Zeit, ich hoffe ich kann mich an das geplante halten.
Überzeit
Keine
Reflexion
Bezüglich der veralteten Bedienungsanleitung hätte ich vielleicht auf den Verantwortlichen für die Netzwerksysteme in unserem Betrieb zugehen oder mich mit dem Herstellen in Verbindung setzen müssen.

Tabelle 1 Arbeitsjournal 27.04.2023

Arbeitsjournal 28.04.2023

Tägliche Arbeiten (SOLL / IST)
* Aktivitätsdiagramm abschliessen (0.75h / 1.75h)
* Sequenzdiagramm gemäss Aufgabenstellung für History Funktion (1h / 1h)
* Sequenzdiagramm für Switch Verbindung (0.25h)
* Wireframe für das Admin Panel erstellen (0.25h / 0.25h)
* Testkonzept erstellen (3.5h / 3.25h)
* Expertengespräch (2h / 1h)
* Framework Entscheidung (0.5h / 0.5h)
Ungeplante Arbeiten
* Aktivitätsdiagramm aufteilen
Erfolge
* Während dem Verkleinern vom Aktivitätsdiagramm kam mir die Idee, von der Verbindung zwischen dem Generator und den Switches ein Sequenzdiagramm zu erstellen, um diese genauer aufzuzeigen.
Misserfolge / Probleme
* Unsicher wie ich es protokolieren soll, dass ich neben dem Expertengespräch vergessen habe einen weiteren Auftrag einzutragen, werde mich aber beim Gespräch heute Nachmittag erkundigen.
Beanspruchte Hilfestellungen
* Ich habe gestern bei der Erstellung des Komponentendiagramms mithilfe einer Internetquelle mich über dessen Aufbau informiert und vergessen diese anzugeben.1)) Aufgrund dessen habe ich mich bei einem Mitlernenden (Mailo) darüber erkundigt, ob ich diese beim gestrigen Tag nachtragen oder in das heutige Journal schreiben sollte.
Vergleich mit Zeitplan
* Das Aufteilen des Aktivitätsdiagramm nahm mehr Zeit in Anspruch als gedacht. Ich hatte bei der Planung 45 Minuten für den Abschluss geplant, durch das ungeplante Aufteilen brauchte ich aber eine Stunde länger.
* Dadurch konnte ich zwar noch rechtzeitig mit dem Sequenzdiagramm beginnen, es aber nicht bis zum geplanten Zeitpunkt fertigstellen. Dadurch ist auch das Wireframe um einen Block verspätet. Trotzdem konnte ich noch mit dem Testkonzept beginnen aber bei weitem nicht die geplanten Zwei Stunden daran arbeiten.
* Mir ist bei der Planung den Fehler unterlaufen, für das Expertengespräch 2 Stunden einzuplanen, dadurch habe ich dort noch Zeit, um mit dem Testkonzept aufzuholen
Überzeit
30 Minuten Überzeit, um die vom Experten vorgeschlagenen Änderungen an der Dokumentation vorzunehmen (Aufbau Arbeitsjournal)
Reflexion
Rückblicken war es ungeschickt, das Aktivitätsdiagramm erst in einem zweiten Teil aufzuteilen. Ich hätte vermutlich direkt anfangen müssen es aufzuteilen, als ich merkte das es zu viel wird.
Mir ist aufgefallen, dass ich unterbewusst mit den Diagrammen zwischen Deutsch und Englisch gewechselt habe, was in der Dokumentation nicht sehr schön ist. Für ein zukünftiges Projekt muss ich mir im Vorhinein ein Konzept dafür überlegen, z. B. alles Informatik-bezogene auf Englisch und der Rest auf Deutsch, oder alles in einer Sprache.

Tabelle 2 Arbeitsjournal 28.04.2023

Arbeitsjournal 02.05.2023

Tägliche Arbeiten (SOLL / IST)
* Switch API (3h / 2h)
* VLAN API (3h / 2h)
* Switch Infos abfragen (2h / 2h)
Ungeplante Arbeiten
* Flask installieren (2h)
Erfolge
Ich konnte beide Projekte in einem Repo initialisieren (durch symlink) und ein lesbares Gerüst erstellen
Misserfolge / Probleme
* Dotenv wollte nicht geladen werden absoluten Pfad verwenden
* Konnte repo auf linux nicht pushen da nutzer root chown devmon nutzer
Beanspruchte Hilfestellungen
Need refactoring: x

* https://medium.com/@quincyhsieh/how-to-configure-python3-flask-with-apache-mod-wsgi-production-mode-on-ubuntu-b5b3b36c2d45
* https://flask.palletsprojects.com/en/2.3.x/tutorial/layout/
* https://linuxize.com/post/how-to-create-symbolic-links-in-linux-using-the-ln-command/
* https://superuser.com/questions/244245/how-do-i-get-apache-to-follow-symlinks
* https://pypi.org/project/python-dotenv/
* https://stackoverflow.com/questions/64734118/environment-variable-not-loading-with-load-dotenv-in-linux
* __https:%%//%%www.toptal.com/developers/gitignore__
Vergleich mit Zeitplan
Abgesehen von Problem siehe Reflexion, gut in der Zeit und ich konnte alle geplanten Aufträge erledigen
Überzeit
Keine
Reflexion
Mir war bei der Erstellung des Zeitplanes bewusst, dass ich Flask installieren muss und habe mir auch bei den beiden API arbeiten auch Zeit dafür eingeplant, jedoch kein eigener Task dafür eingetragen. Das war schlecht, da es nicht transparent meine Tätigkeiten aufzeigt und auch nicht übersichtlich ist. Ich habe deshalb im Zeitplan eine neue Zeile mit dem Auftrag «Flask installieren» erstellt und 2 Stunden als überzogenes Zeitbudget eingetragen, obwohl ich diese bereits in den beiden Aufträgen mit einberechnet habe. Dadurch dauerten diese auch nur 2 Stunden statt den geplanten 3 (für jeden Auftrag 1h für Flask geplant).

Tabelle 3 Arbeitsjournal 02.05.2023

Arbeitsjournal 03.05.2023

Tägliche Arbeiten (SOLL / IST)
* Switch responses parsen (4h / 4h)
* Switchpanel Plugin Text erstellen (2h / 2h)
* Plugin Text auf Wiki hochladen (1h / 2h)
* Admin Panel Frontend erstellen (1h / -)
Ungeplante Arbeiten
Keine
Erfolge
* Möglichen Aufbau der geparsten JSON-Ausgabe überlegt
* Diagrammgenerierung soweit fertig
Misserfolge / Probleme
* Regex für «show version» funktionierte bei allen Switches ausser bei einem, anschliessend habe ich mir den Response von diesem angeschaut und gesehen, dass bei diesem im Output zwischen «version : V4.0» kein Leerschlag ist sondern «version: V4.0» ein \s* eingefügt
* JSON File Output ist nicht formatiert, nach google recherche json.dump(file, indent=4)
Beanspruchte Hilfestellungen
Need refactoring: x

* https://regex101.com
* https://stackoverflow.com/questions/37398301/json-dumps-format-python
* https://www.dokuwiki.org/plugin:switchpanel
* https://www.dokuwiki.org/de:wiki:syntax#absaetze
* https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
* __https:%%//%%www.w3schools.com/python/gloss_python_escape_characters.asp__
* Für Absatz in DokuWiki «
», in Python bedeutet «\\» «\» ich musste die Backslashes escapen im code: «\\
», im DokuWiki: «
»
* __https:%%//%%www.w3schools.com/python/ref_string_join.asp__
* newline when putting strings together
* https://www.tutorialspoint.com/python-program-to-split-the-even-and-odd-elements-into-two-different-lists
*
Vergleich mit Zeitplan
* Änderung am Zeitplan bezüglich Benutzeranleitung, Experten mitgeteilt
* Frontend für Admin Panel konnte ich noch nicht beginnen und erledigen, da das Implementieren des Hochladens 1 Stunde länger gedauert hat wie angenommen
Überzeit
30 Minuten Überzeit, Git Problem (siehe Reflexion)
Reflexion
Ich habe dummerweise meinen Code gepusht, ohne vorher zu pullen. Als die IDE dies automatisch versuchte gab es ein Konflikt, da der Linux Benutzer (devmon) nicht über die Berechtigung über das gesamte Repo verfügte, sondern nur auf die Projektordner. Da ich gestern aber meine Dokumentation erst nach dem Code gepusht hatte, konnte die IDE meine Änderungen nicht pullen. Das Problem konnte ich lösen, in dem ich dem Linux Benutzer für das gesamte Repo Berechtigung gab (chown). Daraus lerne ich, dass ich nie mehr mehrere Projekte in einem Repo haben werde und in Zukunft unbedingt an das pullen vor dem pushen denken muss.

Tabelle 4 Arbeitsjournal 03.05.2023

Arbeitsjournal 04.05.2023

Tägliche Arbeiten (SOLL / IST)
* Start Script Funktion (0.5h / 1h)
* Log Funktion (1h / 1h)
* History Funktion (3h / 5h)
Ungeplante Arbeiten
* Frontend Admin Panel (1h / 1h)
Erfolge
Coding Arbeiten abgeschlossen, morgen testen
Misserfolge / Probleme
* Das Script per Admin Panel zu starten war aufwändiger als gedacht, denn das geeigneten Python Modul, um Konsolenbefehle auszuführen, unterstützt das Wechseln der virtuellen Umgebung nicht. Diese brauche ich aber für meine Module etc. Ich konnte während meiner Internetrecherche herausfinden, dass der Wechsel mit einem Bash File möglich wäre. So bin ich auf die Lösung gekommen, ein Start-File zu erstellen und in Python nur dieses aufzurufen.
* Ich habe den Aufwand für die History Funktion unterschätzt, denn ich muss durch die HTML Dateien iterieren um die SVGs zu finden. Da dies nicht funktionierte und es nicht herausfinden konnte, habe ich 2 Beispieldiagramme vom Wiki manuell kopiert und im Code verwendet um trotzdem weiter programmieren zu können.
Beanspruchte Hilfestellungen
* https://flask.palletsprojects.com/en/2.3.x/templating/
* https://www.w3schools.com/tags/tag_select.asp
* https://stackoverflow.com/questions/33580143/flask-show-flash-messages-in-alertbox
* __https:%%//%%stackoverflow.com/questions/34902378/where-do-i-get-secret-key-for-flask__
* https://realpython.com/python-subprocess/
* https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
* https://regex101.com
Vergleich mit Zeitplan
Ich hatte heute mit mehreren Baustellen zu kämpfen, zum einen kam das Admin Panel von gestern als Arbeit dazu und zudem dauerte sowohl die Startfunktion wie auch die History länger als gedacht. Ich konnte aber alle Programmieraufträge so weit abschliessen, wodurch aber die Dokumentation auf der Strecke blieb. Aber ich habe mir immer Notizen gemacht
Überzeit
30 Minuten Überzeit um Arbeitsjournal zu schreiben
Reflexion
Rückblickend habe ich zu lange am Problem mit der SVG Extraktion gesessen bis ich auf die Idee der manuellen Umsetzung gekommen bin

Tabelle 5 Arbeitsjournal 04.05.2023

Arbeitsjournal 05.05.2023

Tägliche Arbeiten (SOLL / IST)
* Manuelle Tests (5h / 5h)
Ungeplante Arbeiten
* Problem HTML SVG extrahieren mit VF angeschaut (2h)
Erfolge
* Testing erfolgreich abgeschlossen
* Stackoverflow Frage wegen Problem mit SVG gestellt
Misserfolge / Probleme
Keine
Beanspruchte Hilfestellungen
Mit VF nach Fehlerquelle beim Extrahieren von SVG gesucht
Vergleich mit Zeitplan
Ich bin wieder gut im Zeitplan, habe jedoch durch das Analysieren des Problems mit Stefan erneut die Dokumentation vernachlässigt
Überzeit
Keine
Reflexion
Ich bin ein wenig beruhigt das es sich beim Fehler nicht um etwas kleines oder Vermeidbares handelt, bin aber trotzdem über ihn genervt und hoffe von Stackoverflow eine Antwort zu bekommen

Tabelle 6 Arbeitsjournal 05.05.2023

Arbeitsjournal 09.05.2023

Tägliche Arbeiten (SOLL / IST)
* Dokumentation (5h / 5h)
Ungeplante Arbeiten
Keine
Erfolge
Ich konnte das Script von Switchpanel, welches für das Hower-Popup verwendet wird auf der History einbetten
Misserfolge / Probleme
Die vorgeschlagene Lösung auf Stackoverflow mit BeautifulSoup war leider nicht erfolgreich, da der gesamte HTML Code nun
durchsäht ist und mit re.sub oder string.replace nicht entfernt werden kann
Beanspruchte Hilfestellungen
* https://www.netsolutions.com/insights/flask-vs-django/
* https://stackoverflow.com/questions/3945750/find-a-specific-tag-with-beautifulsoup
* https://stackoverflow.com/questions/62641616/escape-problem-with-beautifulsoup-in-python
* https://www.crummy.com/software/BeautifulSoup/bs4/doc/#output-formatters
* https://github.com/GreenItSolutions/dokuwiki-plugin-switchpanel/blob/master/script.js
Vergleich mit Zeitplan
Leider nicht so weit gekommen in der Dokumentation wie gedacht
Überzeit
30 Minuten Überzeit, um zu versuchen den Stackoverflow Vorschlag umzusetzen ohne Erfolg
Reflexion
Ich bin von meiner heutigen Leistung enttäuscht. Zudem merkte ich, dass ich ein wenig ratlos bin, was ich in das Realisieren Kapitel schreiben sollte.

Tabelle 7 Arbeitsjournal 09.05.2023

Arbeitsjournal 10.05.2023

Tägliche Arbeiten (SOLL / IST)
* Benutzeranleitung (7h / 7h)
* Expertenbesuch (1h / 1h)
Ungeplante Arbeiten
Keine
Erfolge
2. Expertenbesuch und gut vorangekommen beim Benutzerhandbuch
Misserfolge / Probleme
Keine
Beanspruchte Hilfestellungen
* https://www.ionos.de/digitalguide/hosting/hosting-technik/cronjob/
Vergleich mit Zeitplan
Ich bin gut in der Zeit, Morgen früh den Finalschliff an der Bedienungsanleitung machen und anschliessend an der Dokumentation arbeiten
Überzeit
30 Minuten Überzeit, um an der Benutzeranleitung zu arbeiten
Reflexion
Mithilfe des Expertengespräches konnte ich mir gute Gedankengänge machen, unter anderem nicht zu beschreiben Was sondern Weshalb.

Tabelle 8 Arbeitsjournal 10.05.2023

Arbeitsjournal 11.05.2023

Tägliche Arbeiten (SOLL / IST)
* Benutzeranleitung abschliessen (1h / 2h)
* Dokumentieren (3h / 5h)
* Weiterentwicklungsmöglichkeiten (1h / 1h)
Ungeplante Arbeiten
Ich habe beim testen lassen der Bedienungsanleitung zwar mit Verbesserungsvorschlägen gerechnet, aber zu wenig Zeit eingeplant, um auch noch Verbesserungen am Admin Panel vorzunehmen.
Erfolge
Dank des Feedbacks eines Systemtechnikers konnte ich die Bedienungsanleitung überprüfen lassen und das mit Erfolg, jedoch hat er noch ein Fehler im Admin Panel entdeckt, diesen habe ich behoben.
Misserfolge / Probleme
Keine nennenswerten Probleme
Beanspruchte Hilfestellungen
Testing der Bedienungsanleitung / Software durch Mitlehrling Systemtechnik (Fabio) und Rückmeldung erhalten
Vergleich mit Zeitplan
Ich konnte gute Struktur im Realisationsteil bringen, es wird jedoch eng werden alle Gedanken niederschrieben zu können, durch Umsetzung der Verbesserungsvorschläge hat die Benutzeranleitung länger gebraucht
Überzeit
30 Minuten Überzeit, um Tagesjournal zu schreiben
Tagesreflexion
Ich habe festgestellt, dass ich effizienter dokumentieren kann, wenn ich meine Gedanken zu Beginn in Stichworten aufliste und sie dann in einem weiteren Schritt ausführlich beschreibe, anstatt sie von Anfang an detailliert zu erfassen und dabei Gefahr zu laufen, wichtige Gedanken zu vergessen. Meine Kräfte schwinden zunehmend, möchte aber morgen am letzten Tag nochmals alles geben.

Tabelle 9 Arbeitsjournal 11.05.2023

Arbeitsjournal 12.05.2023

Tägliche Arbeiten (SOLL / IST)
* Dokumentieren (8h / 7h)
Ungeplante Arbeiten
* Reflexion (2h / 1h)
Erfolge
Dokumentation so weit wie zeitlich möglich abgeschlossen
Misserfolge / Probleme
Beanspruchte Hilfestellungen
Vergleich mit Zeitplan
Überzeit
Reflexion

Tabelle 10 Arbeitsjournal 12.05.2023

Projekt Dokumentation

Kurzfassung

Ausgangssituation

Um eine Übersicht der Konfiguration aller Switches in der Rafisa zu haben, verbindet sich ein Lehrling der Systemtechnik manuell zu den einzelnen Switches, fragt deren Konfiguration ab und trägt diese mittels Switchpanel Plugin in das DokuWiki der Rafisa ein, um ein Diagramm zu erstellen.

Umsetzung

Es wurde ein System zur automatisierten Dokumentation von Switch-Konfigurationen erstellt. Dies wurde mit Python programmiert.

Zur Übertragung von Parametern zwischen den Teilsystemen wurde eine API erstellt, mit der der Diagrammgenerator Konfigurationen von verschiedenen Seiten des DokuWikis abfragen kann. Die Auswertung der Daten erfolgt durch Regex.

Mit HTML und CSS wurde ein Adminpanel eingerichtet. Um die API und die Webkomponenten nach aussen Zugänglich zu machen wurde Flask verwendet.

Ergebnis

<HTML><ul></HTML> <HTML><li></HTML>

<HTML></li></HTML><HTML></ul></HTML>

Informieren

Switch Befehle

Im Internet habe ich eine Bedienungsanleitung von Zyxel für ihre Switches gefunden.2) Ich konnte daraus folgende Befehle entnehmen, welche ich für das Projekt verwenden werde:

«show vlan»

Dieser Befehl zeigt den Status von allen VLANs an, welche auf dem jeweiligen Switch konfiguriert sind. Die Ausgabe ist so aufgebaut, dass bei jedem dieser VLANs die VLAN ID (VID) und die Portnummern angegeben werden, welche Zugriff auf das VLAN haben. Dabei wird zwischen Ports unterschieden, welche tagged und welche untagged sind.

Abbildung 2 Beispiel show vlan (Quelle: (ZyXEL Communications Corporation, 2015) Seite 314)

Tagged Ports müssen nicht Trunks sein, Trunks sind aber immer tagged3). Nach Rücksprache mit Egil Rüefli (Leiter Systemtechnik) werden Trunks in der Rafisa Informatik GmbH anhand des tagged Status identifiziert.

«show interfaces status»

Dieser Befehl gibt eine List von allen Portnummern und den Informationen über diese an (z.B. die Geschwindigkeit). Dieser Befehl wird voraussichtlich nur zur Bestimmung der Portanzahl Verwendung finden.

«show mac address-table all»

Dieser Befehl listet alle MAC-Adressen an einem Switch auf und zeigt, an welchem Port und in welchem VLAN sich diese befinden. Letzteres ist für diesen Auftrag irrelevant.

Ein Bild, das Text enthält. Automatisch generierte Beschreibung

Abbildung 3 Beispiel show mac address-table all (Quelle: (ZyXEL Communications Corporation, 2015) Seite 184)

«show version»

Dieser Befehl gibt die aktuell auf dem Gerät installierte Firmware Version aus.

Abbildung 4 Beispiel show version (Quelle: (ZyXEL Communications Corporation, 2015) Seite 346)

Rückfragen

Folgende Rückfragen wurden mit dem Auftraggeber Egil Rüefli vor Planungsbeginn besprochen:

  • Bezüglich der Port Anordnung in den fertigen Diagrammen wird eine, mit den tatsächlichen Switches übereinstimmende gewünscht. Diese ist von links unten nach rechts oben.
  • Ich wurde darauf hingewiesen, dass MAC-Adressen, die an einem Port angeschossenen sind, bei Trunks nicht dargestellt werden müssen.
  • Es wird gewünscht, dass im Falle von fehlerhaft konfigurierten Ports nicht nur Mehrfachzuweisungen von VLANs an einem Accessport und nicht zugewiesene VLANs bei Trunks angezeigt werden, sondern auch VLANs, die noch keinem Port auf dem gesamten Switch zugewiesen wurden.
  • Zudem einigten wir uns darauf, dass jeder Standort neben einer Info-Page auch eigene Config-Pages erhält.

Planen

Use Case

Ein Bild, das Diagramm enthält. Automatisch generierte Beschreibung

Abbildung 5 Use Case Diagramm

Dieses Use-Case zeigt, dass Systemtechniker mithilfe des „Switch Monitoring“ Tools in der Lage sind, VLANs und Switches für jeden Standort der Rafisa zu verwalten und erstellte Diagramme anzuzeigen. Der Administrator kann zudem standortübergreifend die Diagrammgenerierung starten sowie Diagramme von verschiedenen Daten vergleichen.

Systemgrenze

Ein Bild, das Diagramm, Plan enthält. Automatisch generierte Beschreibung

Abbildung 6 Systemgrenze

Dieses Diagramm verdeutlicht die Systemgrenze, in welcher das Projekt umgesetzt wurde. Zudem wird ersichtlich, dass das Wiki ausserhalb des Rafisa Netzwerkes ist und dass der Admin zwingend im Rafisa Netzwerk sein muss, um auf das Admin Panel zugreifen zu können.

Komponentendiagramm

Abbildung 7 Komponentendiagramm

Dieses Komponentendiagramm bietet sowohl Möglichkeit, die erste Ebene der Programmaufteilung aufzuzeigen, als auch alle Schnittstellen zu identifizieren, die bei der Anpassung an andere Mengengerüste erforderlich sind. Diese kann in der Konfigurationsdatei des jeweiligen Komponenten getan werden.

Es ist wichtig zu beachten, dass das Log File nicht im Diagramm berücksichtigt wurde, da das Admin Panel dieses lediglich anhand eines absoluten Pfades, welcher ebenfalls in der Konfigurationsdatei definiert ist, öffnet.

Es ist möglich, die einzelnen Komponenten unabhängig voneinander zu verwenden, aber es ist wichtig, dabei die Inputs und Outputs zu beachten.

Aktivitätsdiagramme

Ein Bild, das Diagramm enthält. Automatisch generierte Beschreibung

Abbildung 8 Aktivitätsdiagramm switch_diagram_generator

Mithilfe dieses Aktivitätsdiagrammes wird der Ablauf des Diagrammgenerators mit den einzelnen Unterprozessen ersichtlich. Zudem wird dargestellt, welche Prozesse die VLAN-Daten aus dem Wiki benötigen. Die Switch-Daten sind bewusst nicht dargestellt, da diese direkt von «get_wiki_data» an «process_switches» weitergegeben werden und anschliessend nicht mehr gebraucht werden.

Ein Bild, das Diagramm enthält. Automatisch generierte Beschreibung

Abbildung 9 Aktivitätsdiagramm get_wiki_data

Zeigt die Entgegennahme der Switch- und VLAN-Parametern für den Diagrammgenerator, um diese dem ganzen Prozess zur Verfügung zu stellen. Für den Fall, dass diese leer sind (keine Verbindung möglich oder sonstigen Fehler), wird das Programm mit einer Error Nachricht beendet.

Ein Bild, das Diagramm enthält. Automatisch generierte Beschreibung

Abbildung 10 Aktivitätsdiagramm process_switches

Dieses Diagramm beschreibt die Iteration durch die erhaltenen Switch-Daten, um die Anfrage an die einzelnen Switches durchzuführen und deren Antwort zu speichern. Der eigentliche Anfragevorgang wird in einem Sequenzdiagramm im nächsten Kapitel dargestellt. Gibt ein Switch ein Error zurück, wird dieser übersprungen und anstelle der Antworten die Fehlermeldung hinterlegt. Die ganze Iteration erfolgt standortweise, um die einzelnen Switches zuordnen zu können.

Ein Bild, das Diagramm enthält. Automatisch generierte Beschreibung

Abbildung 11 Aktivitätsdiagramm parse_switch_responses

Dieses Diagramm beschreibt die Auswertung und Bereinigung der erhaltenen Daten. Dabei werden Strings direkt «weitergeleitet», da es sich in diesem Fall um eine Fehlernachricht handelt und nicht ausgewertet werden muss. Anschliessend werden die erhaltenen Antworten in eigenen Prozessen mittels Regex ausgewertet und einer «Standortliste» hinzugefügt. Es ist sichtbar, dass der Prozess «parse_show_vlan» derjenige ist, welcher die VLAN-Daten benötigt. Damit kann den VLAN-IDs aus den Antworten sowohl den VLAN-Namen als auch die dazugehörige Farbe herausgefunden werden. Gibt es in diesem Prozess einen Fehler, wird der betroffene Switch ebenfalls übersprungen und die Fehlermeldung weitergereicht.

Ein Bild, das Diagramm enthält. Automatisch generierte Beschreibung

Abbildung 12 Aktivitätsdiagramm create_switchpanel_text

In diesem Prozess wird aus den Daten für jeden Standort die Info Page und die darin enthaltenen Diagramme erstellt. Dabei wird die Syntax von DokuWiki4) und die des Switchpanel Plugins5) verwendet. Für jeden Standort wird mithilfe der VLAN-Daten eine Legende erstellt und alle Switches anschliessend dargestellt. Ergebnis ist für jeden Standort einen String, welcher später in ein Textdokument geschrieben wird.

Abbildung 13 Aktivitätsdiagramm upload_switchpanel_text

Dieses Diagramm stellt den Ablauf des Uploads auf das DokuWiki der Rafisa dar. Nach Erstellen einer SFTP-Verbindung werden standortweise die Dateien erstellt, ist es nicht möglich eine Verbindung herzustellen wird das Programm mit einer Fehlermeldung beendet.
Für jeden Standort wird die Info Page unter dem Namen «lan_<standort>» hochgeladen. Zudem wird für die History Funktion jeden Tag ein Ordner mit dem aktuellen Datum im «versioning» Ordner erstellt und eine Version aller Standorte darin gespeichert. Im Anschluss wird ein Log mit den Worten «diagram generation done» ausgegeben, um die Beendung der Generierung mitzuteilen.

Sequenzdiagramme

Ein Bild, das Diagramm, Tisch enthält. Automatisch generierte Beschreibung

Abbildung 14 Sequenzdiagramm get_switch_data

Dieses Diagramm zeigt den Ablauf einer Anfrage an einen Switch. Rückgabewert ist eine Liste mit den Antworten, in der selben Reihenfolge wie die gesendeten Befehle.

Ein Bild, das Diagramm, Tisch enthält. Automatisch generierte Beschreibung

Abbildung 15 Sequenzdiagramm history

Dieses Diagramm zeigt den Ablauf und die involvierten Prozesse bei einer Auslösung der History Funktion durch einen Administrator.

Wireframe Admin Panel

Abbildung 16 Wireframe Admin Panel

Dies ist das Wireframe des Admin Panels mit allen Komponenten, welche zur Erfüllung der Use Cases vonnöten sind.

Testkonzept

Testmethode

Als Testmethode kommt manual testing zum Einsatz. Dafür definierte Testfälle manuell abgearbeitet. Diese wurden unter Zuhilfenahme des Use Case Diagrammes definiert und damit abgeglichen.

Testumgebung

Getestet wir im Netzwerk der Rafisa, auf den bereits in der Entwicklung verwendete Linux Server und DevWiki. Zusätzlich werden die Tests, bei welchen Switches involviert sind, nicht bei allen Geräten durchgeführt und deshalb aus Zeitlogistischen Gründen ein Referenzgerät verwendet. Diese Systeme werden verwendet:

Devmon Server
Hostname: mos-zh-01.rafisa.org
OS: Ubuntu 20.04 LTS
IP-Adresse: 172.16.1.160
Zugang: SSH / HTTP

Wiki Server
Hostname: wikidev.rafisa.net
OS: Ubuntu 20.04 LTS
IP-Adresse: 138.201.126.13
Zugang: SSH / HTTPS

Referenz Switch
Hostname: sw-zh-r02a-01
OS: V4.50(AAOC.3)
IP-Adresse: 172.16.1.2
Zugang: SSH

Referenz Computer
Hostname: DESKTOP-MHNC9D6
OS: Windows 10 Pro 22H2
Browser: Opera 98.0.4759.15

Ausgeschlossene Testszenarien

Ausserhalb des Testbereiches liegt der Endbenutzer sowie das von ihm verwendete Gerät. Grund dafür ist, dass sich dies ausserhalb der Systemgrenzen befindet und mit einem Referenzbrowser, welcher auf Chromium basiert, getestet wird.

Testfälle

Nr.Was Vorbedingung Eingabe Erwartetes Resultat
1 Script starten Admin Panel ist gestartet und im Browser geöffnet Klicken auf ‘start’ Nutzer bekommt Meldung,dass das Script im Hintergrund ausgeführt wird, Script wird tatsächlich ausgeführt
2 Log anzeigen Admin Panel ist gestartet und im Browser geöffnet Klicken auf ‘log’ Weiterleitung auf /log, Anzeige des Logs des letzten Durchlaufs
3 History anzeigen * Zwei Diagramm-Versionen, an welchen Zwei unterschiedliche VLAN-Belegungen eingetragen wurde, auf dem Wiki Server an unterschiedlichen Daten gespeichert
* Admin Panel ist gestartet und im Browser geöffnet
* Datum der Zwei Versionen auswählen
* Auf ‘Vergleichen’ klicken
Weiterleitung auf /api/compare, links und rechts werden die Zwei vorhin ausgewälten Diagramme angezeigt. Ports welche unverändert sind haben einen Transparenzeffekt, die anderen nicht
3.1Datum in Zukunft Admin Panel ist gestartet und im Browser geöffnet * Mindestens ein Datum wählen, welches in der Zukunft liegt
* Auf ‘Vergleichen’ klicken
Nutzer bekommt Meldung, das zu einem der Daten keine History vorliegt.
3.2Datum ohne History Admin Panel ist gestartet und im Browser geöffnet * Mindestens ein Datum wählen, zu welchem es keine History gibt
* Auf ‘Vergleichen’ klicken
Nutzer bekommt Meldung, das zu einem der Daten keine History vorliegt.
4 Vlans hinzufügen * Admin Panel ist gestartet
* Wiki Vlan Config Page eines Standortes ist geöffnet
* VID = 02
* Interface Name = VLAN02_TEST
* Color = #ee6a20
Beim Aufruf von /api/vlans sollte es innerhalb des Standortes auftauchen
4.1Ohne Farbe * Admin Panel ist gestartet
* Wiki Vlan Config Page eines Standortes ist geöffnet
* VID = 08
* Interface Name = VLAN08_COLOR
Falls eine Kategorienfarbe definiert ist, wird diese allenfalls die Standartfarbe unter /api/vlans auftauchen
4.2Vlan Name falsches Format * Admin Panel ist gestartet
* Wiki Vlan Config Page eines Standortes ist geöffnet
* VID = 09
* Interface Name = VLAN_FORMAT
* Color = # fb5d5f
Taucht unter /api/vlans nicht auf
5 Switches hinzufügen * Admin Panel ist gestartet
* Wiki IP Config Page eines Standortes ist geöffnet
* Hostname = sw-zh-r02a-01
* Funktion = Switch
Beim Aufruf von /api/switches sollte es innerhalb des Standortes auftauchen
5.1Switch Name falsches Format * Admin Panel ist gestartet
* Wiki IP Config Page eines Standortes ist geöffnet
* Hostname = zurich-r04a-01
* Funktion = Switch
Taucht unter /api/switches nicht auf
5.2Switch Funktion falsches Format * Admin Panel ist gestartet
* Wiki IP Config Page eines Standortes ist geöffnet
* Hostname = sw-zh2-rg5-01
* Funktion = Router
Taucht unter /api/switches nicht auf
6 Diagramm anzeigen Switch Diagramm Generator wurde erfolgreich ausgeführt Wiki Diagramm Page eines Standortes öffnen Diagramme der Switches des Standortes werden angezeigt
6.1MAC-Adressen * Laptop an einen Switch anschliessen
* Switch Diagramm Generator wurde erfolgreich ausgeführt
Wiki Diagramm Page eines Standortes öffnen MAC-Adresse des Laptops wird am korrekten Switch und am korrekten Port angezeigt
6.2Port Color Switch Diagramm Generator wurde erfolgreich ausgeführt Wiki Diagramm Page eines Standortes öffnen Die Ports werden in den korrekten Farben, wie auf der Config Page festgelegt, dargestellt
6.3Port Clash * Manuell eine Doppelbelegung von Vlans an einem Port erzeugen
* Switch Diagramm Generator wurde erfolgreich ausgeführt
Wiki Diagramm Page eines Standortes öffnen Der jeweilige Port hat die, in den Settings festgelegte Error Label Farbe und in der Beschreibung werden die jeweiligen Vlans erläutert
6.4Switch nicht alle Vlans zugewiesen * Manuell eine Nichtzuweisung von Vlans erzeugen
* Switch Diagramm Generator wurde erfolgreich ausgeführt
Wiki Diagramm Page eines Standortes öffnen Unterhalb des Switch-Diagrammes werden die nicht zugewiesenen Vlans aufgelistet
6.5Switch tagged Ports nicht alle Vlans* Manuell eine Nichtzuweisung von Vlans an einem getaggten Port erzeugen
* Switch Diagramm Generator wurde erfolgreich ausgeführt
Wiki Diagramm Page eines Standortes öffnen Beim hovern über den besagten Port werden die nicht zugewiesenen Vlans aufgelistet
6.6Unbekanntes vlan * Ein Vlan, welches verwendet wird, aus der Config Page eines Standortes entfernen
* Switch Diagramm Generator wurde erfolgreich ausgeführt
Wiki Diagramm Page eines Standortes öffnen Ports mit dem jeweiligen Vlan haben die, in den Settings festgelegte Error Label Farbe und in der Beschreibung wird darauf hingewiesen
7 Keine API-Verbindung API URLs in den Settings abändern Switch Diagramm Generator starten Im Log wird auf den schweren Fehler einer fehlenden Verbindung zu den APIs hingewiesen, Generator läuft nicht
8 Switch nicht erreichbar IP eines Switches auf der Config Page abändern Switch Diagramm Generator starten Auf der Info Page wird auf nicht Erreichbarkeit des Switches hingewiesen, Generator ansonsten durchgelaufen
9 Wiki nicht erreichbar URL des Wikis in den Settings abändern Switch Diagramm Generator starten Im Log wird auf den schweren Fehler der nicht Erreichbarkeit des Wikis hingewiesen, Generator läuft nicht

Tabelle 11 Testfälle

Entscheiden

Framework

Zur Umsetzung des Admin Panels habe ich wie beim Diagrammgenerator auf Python setzen wollen.

Um das Admin Panel erreichbar zu machen musste ich mich für ein Framework entscheiden.

Software

Zur Erstellung der Diagramme wurden verschiedene Werkzeuge verwendet, darunter StarUML für die Sequenzdiagramme, Draw.io für die Systemgrenzen und das Wireframe sowie Astah UML für die übrigen Diagramme.

Als IDE verwendete ich PyCharm und griff dabei auf JetBrains Gateway zurück. Gateway installiert auf Servern eine Backend-Version ihrer IDEs und stellt anschliessend eine Verbindung per SSH zu dieser her und ermöglicht dadurch remote zu coden.6) Aufgrund der Beschränkungen, dass nur der «Devmon»-Server die Möglichkeit hatte, eine Verbindung zu Switches herzustellen, musste ich mich zwischen einem kontinuierlichen Committen von Änderungen oder direktem Programmieren auf dem Server entscheiden, ich entschied mich für letzteres.

Realisieren

Zur besseren Wiederverwendbarkeit und um möglichen Anpassungsaufwand minimal zu halten, trennte ich den eigentlichen Diagrammgenerator von den restlichen Aufgaben. Dadurch besteht die Möglichkeit auf die API zu verzichten und Daten von einem anderen Ort zu beziehen.

Konfigurationsdateien

Regex

APIs

  • Wiki Formatierung
    • VLAN Config um Kategorien erweitert

Code 1 Aufbau VLAN-API

vertopal_0110219078394aabb58ccd49f460d746_media_image23.emf

Code 2 Aufbau Switch-API

Switch Infos abfragen

Mit den Informationen aus der API wird mittels SSH auf die Switches zugegriffen. In einem for-loop werden mittels Shell-Befehlen die benötigten Informationen gesammelt. Ist ein Switch nicht erreichbar wird eine Fehlermeldung an die Response angehängt.

Switch Response parsen

Die Response von den Switches wird als JSON-Data zurückgeliefert.

In der äussersten Ebene befindet sich der Standort. Darin befinden sich in Key-Value pairs die Switchnamen mit ihren Attributen.

Show vlan parsing erklären

vertopal_0110219078394aabb58ccd49f460d746_media_image24.emf

Code 3 Aufbau parsed_switch_response

Start Skript Funktion

  • Keine Möglichkeit mit subprocess
  • Deshalb bash script inerhalb diagram generator

History Funktion

Ablauf

  • Bei jeder Ausführung wird ein Ordner mit dem Datum erstellt/ überschrieben und alle standorte abgelegt
  • Bei Aufruf der History Funktion wird geschaut ob zu beiden Daten ein page des Standortes Exisitert (durch regex)
  • Anschliessend alle svgs mit regex von html extrahieren
    • Überprüfen, ob g tag innerhalb des svgs ist, da dokuwiki eigene svgs hat, welche keine g tags enthalten
  • Durch alle svg iterieren und schauen ob ausgewählter switchname mit switchname von diagramm übereinstimmen (regex)
  • Nach finden des richtigen svgs durch alle g tags (jeder g tag ist ein port) durch Iterieren und mittels regex den vlan namen extrahieren
  • Vlan namen alles ports vergleichen
    • Bei gleichem namen wird mittels regex position vom ende des opening g tags gefunden <g bla bla bla> und css inline style mit

Begründung

Problem SVG extrahieren

Bei der Extrahierung aller SVGs aus dem HTML von DokuWiki gab es das Problem, dass der Regex keinen Treffer fand. Grund dafür war, dass der HTML Code vom Wiki durchsäht war mit «\\».

  • Was bereits unternommen

Es wurde mittels string.replace() zu entfernen wie auch mittels regex

  • Provisorische Lösung

Als provisorische Lösung wurden 2 SVGs mit unterschiedlichen Portbelegungen hart in den Code integriert um die eigentliche Funktion dennoch programmieren zu können.

Fremder Code

Zur Darstellung von Flask.flash habe ich diesen Code verwendet, um ein Javascript Alert auszulösen: https://stackoverflow.com/questions/33580143/flask-show-flash-messages-in-alertbox

Bedienungsanleitung

Es wurde eine Bedienungsanleitung geschrieben, welche sich im Anhang dieses Dokumentes befindet.

Kontrollieren

Test der Bedienungsanleitung

Das Benutzerhandbuch wurde zusammen mit der Software von einem aussenstehenden Systemtechniker-Lehrling anhand der Use Cases getestet. Dies erfolgte ohne

Testprotokolle manual testing

Die durchgeführten Tests basieren auf dem in der Planung erstellten Testkonzept (siehe 2.3.7 Testkonzept).

Tester: Silas Kägi Testnummer:1Datum: 05.05.2023
Titel: Script starten
Erwartete Ausgabe Tatsächliche Ausgabe
Nutzer bekommt Meldung, dass das Script im Hintergrund ausgeführt wird, Script wird tatsächlich ausgeführt Nutzer wird informiert und das Script wird tatsächlich ausgeführt
Fazit: Funktioniert, jedoch wird die Meldung erst nach der Ausführung der Generierung ausgegeben, zudem wartet der Browser die ganze Zeit auf Rückmeldung ohne, dass der Nutzer weiss, was gerade passiert.

Tabelle 13 Testprotokoll Testfall 1

Tester: Silas Kägi Testnummer:2Datum: 05.05.2023
Titel: Log anzeigen
Erwartete Ausgabe Tatsächliche Ausgabe
Weiterleitung auf /log, Anzeige des Logs des letzten Durchlaufs Weiterleitung funktioniert und der Log wird angezeigt
Fazit: Funktioniert, jedoch ist die Ausgabe des Logs als JSON nicht optimal

Tabelle 14 Testprotokoll Testfall 2

Tester: Silas Kägi Testnummer:3Datum: 05.05.2023
Titel: History anzeigen
Erwartete Ausgabe Tatsächliche Ausgabe
Weiterleitung auf /api/compare, links und rechts werden die Zwei vorhin ausgewälten Diagramme angezeigt. Ports welche unverändert sind haben einen Transparenzeffekt, die anderen nicht Weiterleitung funktioniert und Ports mit selbem VLAN sind transparent, Ports mit Veränderungen sind hervorgehoben
Fazit: Funktioniert, jedoch nur mit im Code definierten SVGs, da die Extraktion der SVGs aus dem HTML des Wikis nicht funktioniert

Tabelle 15 Testprotokoll Testfall 3

Tester: Silas Kägi Testnummer:3.1Datum: 05.05.2023
Titel: Datum in Zukunft
Erwartete Ausgabe Tatsächliche Ausgabe
Nutzer bekommt Meldung, das zu einem der Daten keine History vorliegt. Funktioniert, jedoch habe ich für diesen Test die definierten SVGs entfernt und diese wieder vom Wiki geholt, wodurch halt die History nicht mehr angezeigt werden konnte.
Fazit: Die Bezeichnungen date_one und date_two in der Fehlermeldung möglicherweise ungünstig und sollte zu Datum 1 und Datum 2 angepasst werden

Tabelle 16 Testprotokoll Testfall 3.1

Tester: Silas Kägi Testnummer:3.2Datum: 05.05.2023
Titel: Datum ohne History
Erwartete Ausgabe Tatsächliche Ausgabe
Nutzer bekommt Meldung, das zu einem der Daten keine History vorliegt. Siehe Test 3.1
Fazit: Siehe Test 3.1

Tabelle 17 Testprotokoll Testfall 3.2

Tester: Silas Kägi Testnummer:4Datum: 05.05.2023
Titel: Vlans hinzufügen
Erwartete Ausgabe Tatsächliche Ausgabe
Beim Aufruf von /api/vlans sollte es innerhalb des Standortes auftauchen Funktioniert
Fazit: Alles in Ordnung

Tabelle 18 Testprotokoll Testfall 4

Tester: Silas Kägi Testnummer:4.1Datum: 05.05.2023
Titel: Ohne Farbe
Erwartete Ausgabe Tatsächliche Ausgabe
Falls eine Kategorienfarbe definiert ist, wird diese allenfalls die Standartfarbe unter /api/vlans auftauchen Funktioniert
Fazit: Alles in Ordnung

Tabelle 19 Testprotokoll Testfall 4.1

Tester: Silas Kägi Testnummer:4.2Datum: 05.05.2023
Titel: Vlan Name falsches Format
Erwartete Ausgabe Tatsächliche Ausgabe
Taucht unter /api/vlans nicht auf Funktioniert
Fazit: Alles in Ordnung

Tabelle 20 Testprotokoll Testfall 4.2

Tester: Silas Kägi Testnummer:5Datum: 05.05.2023
Titel: Switches hinzufügen
Erwartete Ausgabe Tatsächliche Ausgabe
Beim Aufruf von /api/switches sollte es innerhalb des Standortes auftauchen Funktioniert
Fazit: Alles in Ordnung

Tabelle 21 Testprotokoll Testfall 5

Tester: Silas Kägi Testnummer:5.1Datum: 05.05.2023
Titel: Switch Name falsches Format
Erwartete Ausgabe Tatsächliche Ausgabe
Taucht unter /api/switches nicht auf Funktioniert
Fazit: Alles in Ordnung

Tabelle 22 Testprotokoll Testfall 5.1

Tester: Silas Kägi Testnummer:5.2Datum: 05.05.2023
Titel: Switch Funktion falsches Format
Erwartete Ausgabe Tatsächliche Ausgabe
Taucht unter /api/switches nicht auf Funktioniert
Fazit: Alles in Ordnung

Tabelle 23 Testprotokoll Testfall 5.2

Tester: Silas Kägi Testnummer:6Datum: 05.05.2023
Titel: Diagramm anzeigen
Erwartete Ausgabe Tatsächliche Ausgabe
Diagramme der Switches des Standortes werden angezeigt Funktioniert
Fazit: Alles in Ordnung

Tabelle 24 Testprotokoll Testfall 6

Tester: Silas Kägi Testnummer:6.1Datum: 05.05.2023
Titel: MAC-Adressen
Erwartete Ausgabe Tatsächliche Ausgabe
MAC-Adresse des Laptops wird am korrekten Switch und am korrekten Port angezeigt Funktioniert
Fazit: Alles in Ordnung

Tabelle 25 Testprotokoll Testfall 6.1

Tester: Silas Kägi Testnummer:6.2Datum: 05.05.2023
Titel: Port Color
Erwartete Ausgabe Tatsächliche Ausgabe
Die Ports werden in den korrekten Farben, wie auf der Config Page festgelegt, dargestellt Funktioniert
Fazit: Alles in Ordnung

Tabelle 26 Testprotokoll Testfall 6.2

Tester: Silas Kägi Testnummer:6.3Datum: 05.05.2023
Titel: Port Clash
Erwartete Ausgabe Tatsächliche Ausgabe
Der jeweilige Port hat die, in den Settings festgelegte Error Label Farbe und in der Beschreibung werden die jeweiligen Vlans erläutert Funktioniert
Fazit: Alles in Ordnung

Tabelle 27 Testprotokoll Testfall 6.3

Tester: Silas Kägi Testnummer:6.4Datum: 05.05.2023
Titel: Switch nicht alle Vlans zugewiesen
Erwartete Ausgabe Tatsächliche Ausgabe
Unterhalb des Switch-Diagrammes werden die nicht zugewiesenen Vlans aufgelistet Funktioniert
Fazit: Alles in Ordnung

Tabelle 28 Testprotokoll Testfall 6.4

Tester: Silas Kägi Testnummer:6.5Datum: 05.05.2023
Titel: Switch tagged Ports nicht alle Vlans
Erwartete Ausgabe Tatsächliche Ausgabe
Beim hovern über den besagten Port werden die nicht zugewiesenen Vlans aufgelistet Funktioniert
Fazit: Alles in Ordnung

Tabelle 29 Testprotokoll Testfall 6.5

Tester: Silas Kägi Testnummer:6.6Datum: 05.05.2023
Titel: Unbekanntes vlan
Erwartete Ausgabe Tatsächliche Ausgabe
Ports mit dem jeweiligen Vlan haben die, in den Settings festgelegte Error Label Farbe und in der Beschreibung wird darauf hingewiesen Funktioniert
Fazit: Alles in Ordnung

Tabelle 30 Testprotokoll Testfall 6.6

Tester: Silas Kägi Testnummer:7Datum: 05.05.2023
Titel: Keine API-Verbindung
Erwartete Ausgabe Tatsächliche Ausgabe
Im Log wird auf den schweren Fehler einer fehlenden Verbindung zu den APIs hingewiesen, Generator läuft nicht Funktioniert
Fazit: Alles in Ordnung

Tabelle 31 Testprotokoll Testfall 7

Tester: Silas Kägi Testnummer:8Datum: 05.05.2023
Titel: Switch nicht erreichbar
Erwartete Ausgabe Tatsächliche Ausgabe
Auf der Info Page wird auf nicht Erreichbarkeit des Switches hingewiesen, Generator ansonsten durchgelaufen Funktioniert
Fazit: Alles in Ordnung

Tabelle 32 Testprotokoll Testfall 8

Tester: Silas Kägi Testnummer:9Datum: 05.05.2023
Titel: Wiki nicht erreichbar
Erwartete Ausgabe Tatsächliche Ausgabe
Im Log wird auf den schweren Fehler der nicht Erreichbarkeit des Wikis hingewiesen, Generator läuft nicht Funktioniert
Fazit: Alles in Ordnung

Tabelle 33 Testprotokoll Testfall 9

Auswerten

Weiterentwicklungsmöglichkeiten

Folgende Weiterentwicklungsmöglichkeiten habe ich mir überlegt

  • History SVG Extraktion (Problem Fixen)
  • Passwortschutz (Sicherheit allgemein)
  • Monatliche Auswertung bezüglich fehlerhafter Konfigurierungen
  • Direkten Zugriffsmöglichkeit vom Admin Panel auf die einzelnen Switches (Konsole) Problem wegen Sicherheit
  • API von Parsed Switch Data
  • Datenbankanbindung

Reflexion

Schlusswort

Anhang

Bedienungsanleitung

Versionierung Git Log

Glossar

Keine Indexeinträge gefunden.

  • Regex
  • Switchpanel
  • VLAN
  • Tagged
  • Trunk
  • VID

Literaturverzeichnis

cziehr. (13. 10 2019). Syntax. Abgerufen am 03. 05 2023 von dokuwiki: https://www.dokuwiki.org/de:wiki:syntax#absaetze

Ellis, M. (29. 10 2021). JetBrains Gateway. Abgerufen am 09. 05 2023 von https://www.jetbrains.com/de-de/remote-development/gateway/

Hsieh, Q. (21. 12 2018). How to configure Flask with Apache mod-wsgi (production mode) on Ubuntu with Python3. Abgerufen am 02. 05 2023 von Medium: https://medium.com/@quincyhsieh/how-to-configure-python3-flask-with-apache-mod-wsgi-production-mode-on-ubuntu-b5b3b36c2d45

Lindqvist, N. (03. 02 2022). JSON dumps format Python. Abgerufen am 03. 05 2023 von stackoverflow: https://stackoverflow.com/questions/37398301/json-dumps-format-python

Luber, S., & Donner, A. (01. 08 2018). Abgerufen am 27. 04 2023 von https://www.ip-insider.de/was-ist-ein-vlan-trunk-a-623319/

Mikel. (10. 02 2011). How do I get Apache to follow symlinks? Abgerufen am 02. 05 2023 von superuser: https://superuser.com/questions/244245/how-do-i-get-apache-to-follow-symlinks

mRiston. (24. 08 2022). Switch Panel Plugin. Abgerufen am 03. 05 2023 von dokuwiki: https://www.dokuwiki.org/plugin:switchpanel

(o. D.). Abgerufen am 03. 05 2023 von https://regex101.com

Python Escape Characters. (o. D.). Abgerufen am 03. 05 2023 von w3schools: https://www.w3schools.com/python/gloss_python_escape_characters.asp

Python Software Foundation. (o. D.). datetime. Abgerufen am 03. 05 2023 von python: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

Python String join() Methode. (o. D.). Abgerufen am 03. 05 2023 von w3schools: https://www.w3schools.com/python/ref_string_join.asp

questionto42. (20. 01 2022). Environment Variable not loading with load_dotenv() in Linux. Abgerufen am 02. 05 2023 von stackoverflow: https://stackoverflow.com/questions/64734118/environment-variable-not-loading-with-load-dotenv-in-linux

toptal. (o. D.). gitignore.io. Abgerufen am 02. 05 2023 von https://www.toptal.com/developers/gitignore

Unbekannt. (06. 09 2019). Ln Command in Linux (Create Symbolic Links). Abgerufen am 02. 05 2023 von linuxize: https://linuxize.com/post/how-to-create-symbolic-links-in-linux-using-the-ln-command/

Unbekannt. (24. 02 2023). python-dotenv 1.0.0. Abgerufen am 02. 05 2023 von pypi: https://pypi.org/project/python-dotenv/

Unbekannt. (o. D.). Project Layout. Abgerufen am 02. 05 2023 von palletsprojects: https://flask.palletsprojects.com/en/2.3.x/tutorial/layout/

visual-paradigm.com. (o. D.). What is Component Diagram? Abgerufen am 27. 04 2023 von https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-component-diagram/

yadav, C. (30. 07 2019). Python program to split the even and odd elements into two different lists. Abgerufen am 03. 05 2023 von tutorialspoint: https://www.tutorialspoint.com/python-program-to-split-the-even-and-odd-elements-into-two-different-lists

ZyXEL Communications Corporation. (2015). Abgerufen am 27. 04 2023 von https://usermanual.wiki/Collections/Zyxel/GS2210-48HP/cli_reference_guide/GS2210-48HP_2.pdf

Abbildungsverzeichnis

Abbildung 1 Organisationsdiagramm 9

Abbildung 2 Beispiel show vlan (Quelle: (ZyXEL Communications Corporation, 2015) Seite 314) 29

Abbildung 3 Beispiel show mac address-table all (Quelle: (ZyXEL Communications Corporation, 2015) Seite 184) 30

Abbildung 4 Beispiel show version (Quelle: (ZyXEL Communications Corporation, 2015) Seite 346) 30

Abbildung 5 Use Case Diagramm 31

Abbildung 6 Systemgrenze 32

Abbildung 7 Komponentendiagramm 32

Abbildung 8 Aktivitätsdiagramm switch_diagram_generator 33

Abbildung 9 Aktivitätsdiagramm get_wiki_data 33

Abbildung 10 Aktivitätsdiagramm process_switches 34

Abbildung 11 Aktivitätsdiagramm parse_switch_responses 34

Abbildung 12 Aktivitätsdiagramm create_switchpanel_text 35

Abbildung 13 Aktivitätsdiagramm upload_switchpanel_text 36

Abbildung 14 Sequenzdiagramm get_switch_data 36

Abbildung 15 Sequenzdiagramm history 37

Abbildung 16 Wireframe Admin Panel 37

Tabellenverzeichnis

Tabelle 1 Arbeitsjournal 27.04.2023 14

Tabelle 2 Arbeitsjournal 28.04.2023 16

Tabelle 3 Arbeitsjournal 02.05.2023 18

Tabelle 4 Arbeitsjournal 03.05.2023 20

Tabelle 5 Arbeitsjournal 04.05.2023 22

Tabelle 6 Arbeitsjournal 05.05.2023 23

Tabelle 7 Arbeitsjournal 09.05.2023 24

Tabelle 8 Arbeitsjournal 10.05.2023 25

Tabelle 9 Arbeitsjournal 11.05.2023 26

Tabelle 10 Arbeitsjournal 12.05.2023 27

Tabelle 11 Testfälle 41

Tabelle 13 Testprotokoll Testfall 1 45

Tabelle 14 Testprotokoll Testfall 2 45

Tabelle 15 Testprotokoll Testfall 3 46

Tabelle 16 Testprotokoll Testfall 3.1 46

Tabelle 17 Testprotokoll Testfall 3.2 46

Tabelle 18 Testprotokoll Testfall 4 46

Tabelle 19 Testprotokoll Testfall 4.1 46

Tabelle 20 Testprotokoll Testfall 4.2 47

Tabelle 21 Testprotokoll Testfall 5 47

Tabelle 22 Testprotokoll Testfall 5.1 47

Tabelle 23 Testprotokoll Testfall 5.2 47

Tabelle 24 Testprotokoll Testfall 6 48

Tabelle 25 Testprotokoll Testfall 6.1 48

Tabelle 26 Testprotokoll Testfall 6.2 48

Tabelle 27 Testprotokoll Testfall 6.3 48

Tabelle 28 Testprotokoll Testfall 6.4 48

Tabelle 29 Testprotokoll Testfall 6.5 49

Tabelle 30 Testprotokoll Testfall 6.6 49

Tabelle 31 Testprotokoll Testfall 7 49

Tabelle 32 Testprotokoll Testfall 8 49

Tabelle 33 Testprotokoll Testfall 9 50

Codeverzeichnis

Code 1 Aufbau VLAN-API [[#_Toc134692247|43]]

Code 2 Aufbau Switch-API [[#_Toc134692248|43]]

Code 3 Aufbau parsed_switch_response [[#_Toc134692249|44]]

1)
(visual-paradigm.com, o. D.
2)
(ZyXEL Communications Corporation, 2015)
3)
(Luber & Donner, 2018)
4)
(cziehr, 2019)
5)
(mRiston, 2022)
6)
(Ellis, 2021)
de.bkp/intern/ipa/sk2023/ipa_sk2023.txt · Zuletzt geändert: 2023/08/08 16:51 von 127.0.0.1