{{vertopal_0110219078394aabb58ccd49f460d746/media/image1.png?552x193}} 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 ====== [[#umfeld-und-ablauf|1 Umfeld und Ablauf [[#umfeld-und-ablauf|5]]]] [[#ausganslage|1.1 Ausganslage [[#ausganslage|5]]]] [[#detaillierte-aufgabenstellung|1.2 Detaillierte Aufgabenstellung [[#detaillierte-aufgabenstellung|5]]]] [[#projektorganistation|1.3 Projektorganistation [[#projektorganistation|9]]]] [[#mittel-und-methoden|1.4 Mittel und Methoden [[#mittel-und-methoden|9]]]] [[#vorkenntnisse|1.5 Vorkenntnisse [[#vorkenntnisse|10]]]] [[#vorarbeiten|1.6 Vorarbeiten [[#vorarbeiten|10]]]] [[#projektmanagment-methode|1.7 Projektmanagment Methode [[#projektmanagment-methode|11]]]] [[#_Toc134744120|1.8 Firmenstandards [[#_Toc134744120|11]]]] [[#dokumentenablage|1.9 Dokumentenablage [[#dokumentenablage|11]]]] [[#zeitplan|1.10 Zeitplan [[#zeitplan|12]]]] [[#arbeitsjournale|1.11 Arbeitsjournale [[#arbeitsjournale|13]]]] [[#arbeitsjournal-27.04.2023|1.11.1 Arbeitsjournal 27.04.2023 [[#arbeitsjournal-27.04.2023|13]]]] [[#arbeitsjournal-28.04.2023|1.11.2 Arbeitsjournal 28.04.2023 [[#arbeitsjournal-28.04.2023|15]]]] [[#arbeitsjournal-02.05.2023|1.11.3 Arbeitsjournal 02.05.2023 [[#arbeitsjournal-02.05.2023|17]]]] [[#arbeitsjournal-03.05.2023|1.11.4 Arbeitsjournal 03.05.2023 [[#arbeitsjournal-03.05.2023|19]]]] [[#arbeitsjournal-04.05.2023|1.11.5 Arbeitsjournal 04.05.2023 [[#arbeitsjournal-04.05.2023|21]]]] [[#arbeitsjournal-05.05.2023|1.11.6 Arbeitsjournal 05.05.2023 [[#arbeitsjournal-05.05.2023|23]]]] [[#arbeitsjournal-09.05.2023|1.11.7 Arbeitsjournal 09.05.2023 [[#arbeitsjournal-09.05.2023|24]]]] [[#arbeitsjournal-10.05.2023|1.11.8 Arbeitsjournal 10.05.2023 [[#arbeitsjournal-10.05.2023|25]]]] [[#arbeitsjournal-11.05.2023|1.11.9 Arbeitsjournal 11.05.2023 [[#arbeitsjournal-11.05.2023|26]]]] [[#arbeitsjournal-12.05.2023|1.11.10 Arbeitsjournal 12.05.2023 [[#arbeitsjournal-12.05.2023|27]]]] [[#projekt-dokumentation|2 Projekt Dokumentation [[#projekt-dokumentation|28]]]] [[#kurzfassung|2.1 Kurzfassung [[#kurzfassung|28]]]] [[#ausgangssituation|2.1.1 Ausgangssituation [[#ausgangssituation|28]]]] [[#umsetzung|2.1.2 Umsetzung [[#umsetzung|28]]]] [[#ergebnis|2.1.3 Ergebnis [[#ergebnis|28]]]] [[#informieren|2.2 Informieren [[#informieren|29]]]] [[#switch-befehle|2.2.1 Switch Befehle [[#switch-befehle|29]]]] [[#rückfragen|2.2.2 Rückfragen [[#rückfragen|30]]]] [[#planen|2.3 Planen [[#planen|31]]]] [[#use-case|2.3.1 Use Case [[#use-case|31]]]] [[#systemgrenze|2.3.2 Systemgrenze [[#systemgrenze|32]]]] [[#komponentendiagramm|2.3.3 Komponentendiagramm [[#komponentendiagramm|32]]]] [[#aktivitätsdiagramme|2.3.4 Aktivitätsdiagramme [[#aktivitätsdiagramme|34]]]] [[#sequenzdiagramme|2.3.5 Sequenzdiagramme [[#sequenzdiagramme|37]]]] [[#wireframe-admin-panel|2.3.6 Wireframe Admin Panel [[#wireframe-admin-panel|38]]]] [[#testkonzept|2.3.7 Testkonzept [[#testkonzept|39]]]] [[#entscheiden|2.4 Entscheiden [[#entscheiden|43]]]] [[#framework|2.4.1 Framework [[#framework|43]]]] [[#software|2.4.2 Software [[#software|43]]]] [[#realisieren|2.5 Realisieren [[#realisieren|43]]]] [[#konfigurationsdateien|2.5.1 Konfigurationsdateien [[#konfigurationsdateien|43]]]] [[#regex|2.5.2 Regex [[#regex|43]]]] [[#apis|2.5.3 APIs [[#apis|43]]]] [[#switch-infos-abfragen|2.5.4 Switch Infos abfragen [[#switch-infos-abfragen|44]]]] [[#switch-response-parsen|2.5.5 Switch Response parsen [[#switch-response-parsen|44]]]] [[#start-skript-funktion|2.5.6 Start Skript Funktion [[#start-skript-funktion|46]]]] [[#history-funktion|2.5.7 History Funktion [[#history-funktion|46]]]] [[#fremder-code|2.5.8 Fremder Code [[#fremder-code|46]]]] [[#kontrollieren|2.6 Kontrollieren [[#kontrollieren|47]]]] [[#test-der-bedienungsanleitung|2.6.1 Test Benutzerhandbuch [[#test-der-bedienungsanleitung|47]]]] [[#testprotokolle-manual-testing|2.6.2 Testprotokolle manuel testing [[#testprotokolle-manual-testing|47]]]] [[#auswerten|2.7 Auswerten [[#auswerten|51]]]] [[#weiterentwicklungsmöglichkeiten|2.7.1 Weiterentwicklungsmöglichkeiten [[#weiterentwicklungsmöglichkeiten|51]]]] [[#reflexion|2.7.2 Reflexion [[#reflexion|52]]]] [[#schlusswort|2.7.3 Schlusswort [[#schlusswort|52]]]] [[#anhang|3 Anhang [[#anhang|53]]]] [[#versionierung-git-log|3.1 Versionierung Git Log [[#versionierung-git-log|53]]]] [[#glossar|4 Glossar [[#glossar|53]]]] [[#_Toc134744172|5 Literaturverzeichnis [[#_Toc134744172|53]]]] [[#abbildungsverzeichnis|6 Abbildungsverzeichnis [[#abbildungsverzeichnis|53]]]] [[#tabellenverzeichnis|7 Tabellenverzeichnis [[#tabellenverzeichnis|54]]]] [[#codeverzeichnis|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 ===== {{vertopal_0110219078394aabb58ccd49f460d746/media/image2.jpg?572x345|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?951x426}} {{vertopal_0110219078394aabb58ccd49f460d746/media/image4.emf?930x45}} {{vertopal_0110219078394aabb58ccd49f460d746/media/image5.emf?930x334}} {{vertopal_0110219078394aabb58ccd49f460d746/media/image4.emf?930x45}} {{vertopal_0110219078394aabb58ccd49f460d746/media/image6.emf?930x320}} ===== 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.(((visual-paradigm.com, o. D.))) 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|__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|__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|__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:%%//%%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 ==== ===== Informieren ===== ==== Switch Befehle ==== Im Internet habe ich eine Bedienungsanleitung von Zyxel für ihre Switches gefunden.(((ZyXEL Communications Corporation, 2015) )) 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. {{vertopal_0110219078394aabb58ccd49f460d746/media/image7.png?553x207}} Abbildung 2 Beispiel show vlan (Quelle: (ZyXEL Communications Corporation, 2015) Seite 314) Tagged Ports müssen nicht Trunks sein, Trunks sind aber immer tagged(((Luber & Donner, 2018) )). 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. {{vertopal_0110219078394aabb58ccd49f460d746/media/image8.png?553x161|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. {{vertopal_0110219078394aabb58ccd49f460d746/media/image9.png?553x38}} 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 ==== {{vertopal_0110219078394aabb58ccd49f460d746/media/image10.png?369x612|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 ==== {{vertopal_0110219078394aabb58ccd49f460d746/media/image11.png?408x346|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 ==== {{vertopal_0110219078394aabb58ccd49f460d746/media/image12.png?531x391}} 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 ==== {{vertopal_0110219078394aabb58ccd49f460d746/media/image13.png?344x339|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. {{vertopal_0110219078394aabb58ccd49f460d746/media/image14.png?362x268|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. {{vertopal_0110219078394aabb58ccd49f460d746/media/image15.png?461x362|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. {{vertopal_0110219078394aabb58ccd49f460d746/media/image16.png?538x522|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. {{vertopal_0110219078394aabb58ccd49f460d746/media/image17.png?553x591|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 DokuWiki(((cziehr, 2019) )) und die des Switchpanel Plugins(((mRiston, 2022) )) 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. {{vertopal_0110219078394aabb58ccd49f460d746/media/image18.png?407x319}} 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_» 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 ==== {{vertopal_0110219078394aabb58ccd49f460d746/media/image19.png?431x364|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. {{vertopal_0110219078394aabb58ccd49f460d746/media/image20.png?469x394|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 ==== {{vertopal_0110219078394aabb58ccd49f460d746/media/image21.png?234x234}} 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.1|Datum 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.2|Datum 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.1|Ohne 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.2|Vlan 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.1|Switch 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.2|Switch 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.1|MAC-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.2|Port 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.3|Port 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.4|Switch 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.5|Switch 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.6|Unbekanntes 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.(((Ellis, 2021) )) 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 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:**|1|**Datum:** |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:**|2|**Datum:** |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:**|3|**Datum:** |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.1|**Datum:** |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.2|**Datum:** |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:**|4|**Datum:** |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.1|**Datum:** |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.2|**Datum:** |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:**|5|**Datum:** |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.1|**Datum:** |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.2|**Datum:** |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:**|6|**Datum:** |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.1|**Datum:** |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.2|**Datum:** |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.3|**Datum:** |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.4|**Datum:** |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.5|**Datum:** |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.6|**Datum:** |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:**|7|**Datum:** |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:**|8|**Datum:** |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:**|9|**Datum:** |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 [[#_Toc134692199|9]] Abbildung 2 Beispiel show vlan (Quelle: (ZyXEL Communications Corporation, 2015) Seite 314) [[#_Toc134692200|29]] Abbildung 3 Beispiel show mac address-table all (Quelle: (ZyXEL Communications Corporation, 2015) Seite 184) [[#_Toc134692201|30]] Abbildung 4 Beispiel show version (Quelle: (ZyXEL Communications Corporation, 2015) Seite 346) [[#_Toc134692202|30]] Abbildung 5 Use Case Diagramm [[#_Toc134692203|31]] Abbildung 6 Systemgrenze [[#_Toc134692204|32]] Abbildung 7 Komponentendiagramm [[#_Toc134692205|32]] Abbildung 8 Aktivitätsdiagramm switch_diagram_generator [[#_Toc134692206|33]] Abbildung 9 Aktivitätsdiagramm get_wiki_data [[#_Toc134692207|33]] Abbildung 10 Aktivitätsdiagramm process_switches [[#_Toc134692208|34]] Abbildung 11 Aktivitätsdiagramm parse_switch_responses [[#_Toc134692209|34]] Abbildung 12 Aktivitätsdiagramm create_switchpanel_text [[#_Toc134692210|35]] Abbildung 13 Aktivitätsdiagramm upload_switchpanel_text [[#_Toc134692211|36]] Abbildung 14 Sequenzdiagramm get_switch_data [[#_Toc134692212|36]] Abbildung 15 Sequenzdiagramm history [[#_Toc134692213|37]] Abbildung 16 Wireframe Admin Panel [[#_Toc134692214|37]] ====== Tabellenverzeichnis ====== Tabelle 1 Arbeitsjournal 27.04.2023 [[#_Toc134692215|14]] Tabelle 2 Arbeitsjournal 28.04.2023 [[#_Toc134692216|16]] Tabelle 3 Arbeitsjournal 02.05.2023 [[#_Toc134692217|18]] Tabelle 4 Arbeitsjournal 03.05.2023 [[#_Toc134692218|20]] Tabelle 5 Arbeitsjournal 04.05.2023 [[#_Toc134692219|22]] Tabelle 6 Arbeitsjournal 05.05.2023 [[#_Toc134692220|23]] Tabelle 7 Arbeitsjournal 09.05.2023 [[#_Toc134692221|24]] Tabelle 8 Arbeitsjournal 10.05.2023 [[#_Toc134692222|25]] Tabelle 9 Arbeitsjournal 11.05.2023 [[#_Toc134692223|26]] Tabelle 10 Arbeitsjournal 12.05.2023 [[#_Toc134692224|27]] Tabelle 11 Testfälle [[#_Toc134692225|41]] Tabelle 13 Testprotokoll Testfall 1 [[#_Toc134692226|45]] Tabelle 14 Testprotokoll Testfall 2 [[#_Toc134692227|45]] Tabelle 15 Testprotokoll Testfall 3 [[#_Toc134692228|46]] Tabelle 16 Testprotokoll Testfall 3.1 [[#_Toc134692229|46]] Tabelle 17 Testprotokoll Testfall 3.2 [[#_Toc134692230|46]] Tabelle 18 Testprotokoll Testfall 4 [[#_Toc134692231|46]] Tabelle 19 Testprotokoll Testfall 4.1 [[#_Toc134692232|46]] Tabelle 20 Testprotokoll Testfall 4.2 [[#_Toc134692233|47]] Tabelle 21 Testprotokoll Testfall 5 [[#_Toc134692234|47]] Tabelle 22 Testprotokoll Testfall 5.1 [[#_Toc134692235|47]] Tabelle 23 Testprotokoll Testfall 5.2 [[#_Toc134692236|47]] Tabelle 24 Testprotokoll Testfall 6 [[#_Toc134692237|48]] Tabelle 25 Testprotokoll Testfall 6.1 [[#_Toc134692238|48]] Tabelle 26 Testprotokoll Testfall 6.2 [[#_Toc134692239|48]] Tabelle 27 Testprotokoll Testfall 6.3 [[#_Toc134692240|48]] Tabelle 28 Testprotokoll Testfall 6.4 [[#_Toc134692241|48]] Tabelle 29 Testprotokoll Testfall 6.5 [[#_Toc134692242|49]] Tabelle 30 Testprotokoll Testfall 6.6 [[#_Toc134692243|49]] Tabelle 31 Testprotokoll Testfall 7 [[#_Toc134692244|49]] Tabelle 32 Testprotokoll Testfall 8 [[#_Toc134692245|49]] Tabelle 33 Testprotokoll Testfall 9 [[#_Toc134692246|50]] ====== Codeverzeichnis ====== [[#_Toc134692247|Code 1 Aufbau VLAN-API [[#_Toc134692247|43]]]] [[#_Toc134692248|Code 2 Aufbau Switch-API [[#_Toc134692248|43]]]] [[#_Toc134692249|Code 3 Aufbau parsed_switch_response [[#_Toc134692249|44]]]]