2.3.3 Funktionsweise
Ablauf
- Parsen von Kommandozeilenparametern und setzen des Modus
- Auswerten des Modi und durchführen der betreffenden Arbeiten
Computerverwaltung
Die Computerverwaltung nutzt die im $DataDir erstellten Verzeichnisse als Datenbasis
für die zum System gehörenden Rechner. Deshalb ist es nicht sinnvoll bzw. sogar gefährlich von Hand
Verzeichnisse zu erstellen oder zu löschen oder die Daten irgendwie zu ändern. Es wird dringend davon abgeraten
anders als über das Webinterface bzw. das Backup2 Skript Daten zu ändern!
Da es vorkommen kann das vom Backup2 Skript mehrere Instanzen gleichzeitig laufen und damit
diese auch gleichzeitig auf die entsprechenden Datenbasen zugreifen ist die Verwendung von Lockmechanismen notwendig.
Zu diesem Zweck kommen folgende Verfahren zum Einsatz:
-
dhcpd.conf: Zum sichern dieser Datei wird vor dem ersten Zugriff auf diese Datei geprüt ob eine
Datei dhcpd.conf.lock existiert. Wenn ja wird der Prozess für 2 Sekunden angehalten. Ist diese Datei nicht
vorhanden wird sie erstellt und die aktuelle Instanz bekommt Zugriff auf die Konfigurationsdatei.
Nun wird die aktuelle Konfiguration ausgelesen und darauf bassierend eine neue erstellt.
Diese wird in dhcpd.conf.new.$$ gespeichert ($$ Steht für die ProcessID der Skriptinstanz,
damit kommt es nicht zu Komplikationen wenn mehrere Skripte zeitgleich Änderungen vornehmen bzw. wenn die Datei
wegen einem Fehler zu Diagnosezwecken nicht mehr gelöscht wird). Danach wird der DHCP Server mit Hilfe der
Funktion restart_dhcpd() neu gestartet. (Diese erwartet die neue Konfiguration genau in dieser
Datei dhcpd.conf.new.$$.) Erst bei erfolgreichem Start des DHCP Servers wird der Lock aufgelöst indem man die dhcpd.conf.lock Datei löscht.
Schlägt der Start fehl wird die alte Konfiguration erhalten und der DHCP Server läuft unangetastet weiter. Der Lock wird durch löschen von dhcpd.conf.lock
aufgelöst und die defekte Konfiguration bleibet als dhcpd.conf.net.$$ liegen. Das System erzeugt eine Fehlermeldung.
Computer hinzufügen
- Prüfen von Name und MAC Adresse auf Gültigkeit und gegebenfalls alle Zeichen klein schreiben
- Bestimmen des aktuellen Verzeichnisses und wechseln in das Datenverzeichnis des Projektes
- Prüfen ob der Computer schon existiert anhand des Eintrags im dhcpd.conf File
- Prüfen ob die MAC Adresse bereits verwendet wird
- Bestimmen einer neuen IP Adresse: es werden alle möglichen IPs ab 192.168.Netznummer.1 bis 192.168.
Netznummer.254 durchsucht. Existiert im Verzeichnisbaum des Projekts ein Verzeichnis mit der IP gilt diese als
belegt. Wird bis 254 keine IP gefunden so kommt es zu einer Fehlermeldung und das Programm bricht ab ohne den
Rechner hinzuzufügen.
- Bei gefundener IP Adresse erzeugen des Verzeichnisses mit folgendem Format: "Rechnername - IP Adresse"
und anlegen der Datei backup.db
- Update der DHCP Datenbasis: Zur aktuellen Konfiguration wird eine neue Zeile hinzugefügt
die dem betroffenen Rechner ein Fixed Lease zuteilt. Dabei ist es wichtig das jedes Fixed Lease nur
aus genau einer Zeile besteht damit backup2 auch in der Lage ist dieses Lease wieder zu entfernen
und damit die IP Adresse frei zu geben!
- Nun wird der DHCP Server neu gestartet und der Lock auf das dhcpd.conf freigegeben
- Damit ist das Hinzufügen einers Rechners abgeschlossen und es wird eine positiv Meldung ausgegeben
- wechseln ins aktuelle Verzeichnis
Computer modifizieren
- Prüfen von Name und MAC Adresse auf Gültigkeit und gegebenenfalls alle Zeichen klein schreiben
- Bestimmen des aktuellen Verzeichnisses und wechseln in das Datenverzeichnis des Projektes
- Prüfen ob der Computer vorhanden ist anhand des Rechnernamens und des dhcpd.conf Files
- Alte MAC Adresse und IP sowie Netznummer aus dem dhcpd.conf File bestimmen
- Prüfen ob die neue MAC Adresse bereits im System verwendet wurde
- Umbenennen des Datenverzeichnisses des betroffenen Rechners
- Ändern der dhcpd.conf mit oben beschriebenem Locking Verfahren. Die IP Adresse bleibt erhalten solange der Rechner
im selben Subnetz bleibt. Bei einem Subnetzwechsel wird auch die IP Adresse neu bestimmt.
- Neu starten des DHCP Servers und Erfolgsmeldung an StdOut
- wechseln ins aktuelle Verzeichnis
Computer löschen
- Prüfen des Name auf Gültigkeit und gegebenenfalls alle Zeichen klein schreiben
- Bestimmen des aktuellen Verzeichnisses und wechseln in das Datenverzeichnis des Projektes
- Bestimmen von MAC Adresse und IP aus der dhcpd.conf
- Verzeichnisse löschen
- dhcpd.conf ändern
- DHCP Server neu starten
- Erfolgsmeldung an StdOut
- wechseln ins aktuelle Verzeichnis
Computer auflisten
- Projektname auf Gültigkeit testen und gegebenenfalls alle Zeichen klein schreiben
- Bestimmen des aktuellen Verzeichnisses und wechseln in das Datenverzeichnis des Projektes
- Testen ob der Projektname gesetzt ist
- Wenn Ja: anzeigen dieses Projektes
- Prüfen ob das Projekt existiert
- anzeigen der zum Projekt gehörenden Rechnernamen
- Wenn Nein: anzeigen aller im System vorhandenen Rechner
- wechseln ins aktuelle Verzeichnis
Computerdetails auflisten
Diese Funktion erweitert das Computer auflisten um die Funktion anpingen der betroffenen Rechner
- Anpingen des Rechners
- prüfen der backup.db und der recover.db und bestimmen des aktiven Projektes sowie des Status
Projektverwaltung
Die Projektverwaltung organisiert die Zuordnung von Rechnern zu Projekten. Damit wird eine Gruppierung der
Rechner ermöglicht. Es ist möglich einen Rechner zu mehreren Projekten hinzuzufügen jedoch muß ein Rechner nicht
unbedingt einem Projekt angehören.
Projekt hinzufügen
- Prüfen des Name auf Gültigkeit und gegebenenfalls alle Zeichen klein schreiben
- Bestimmen des aktuellen Verzeichnisses und wechseln in das Datenverzeichnis des Projektes
- Test ob das Projekt schon im Projektfile existiert
- Projekt ins Projektfile hinzufügen
- Erfolgsmeldung an StdOut
Projekt modifizieren
- Prüfen von Projektname und Computernamen auf Gültigkeit und gegebenenfalls klein schreiben
- Bestimmen des aktuellen Verzeichnisses und wechseln in das Datenverzeichnis des Projektes
- Prüfen ob Projekt vorhanden ist
- Prüfen ob die Rechner die hinzugefügt bzw. gelöscht werden sollen überhaupt existiere
- löschen von Rechnern aus einem Projekt:
wechseln in das Verzeichnis der Rechner die gelöscht werden sollen und dort den Datenbestand des
Projektes inkl. Des Projektverzeichnisses löschen
- hinzufügen von Rechnern zum Projekt:
wechsel in das Verzeichnis der Rechner die hinzugefügt werden sollen und dort anlegen eines
Verzeichnisses mit dem Namen des Projektes
- Erfolgsmeldung an StdOut
Projekt löschen
- Prüfen des Name auf Gültigkeit und gegebenenfalls alle Zeichen klein schreiben
- Bestimmen des aktuellen Verzeichnisses und wechseln in das Datenverzeichnis des Projektes
- Prüfen ob das Projekt überhaupt existiert
- Löschen des Eintrages in der ProjektFile
- Löschen aller Projektverzeichnisse inkl Datenbestand in allen Rechnerverzeichnissen
- Erfolgsmeldung an StdOut
Projekt anzeigen
- Prüfen des Rechnernamens auf Gültigkeit und evtl. klein schreiben
- Bestimmen des aktuellen Verzeichnisses und wechseln in das Datenverzeichnis des Projektes
- Prüfen ob Rechnername gesetzt ist
- Wenn ja: Nur Projekte anzeigen zu denen dieser Rechner gehört
- Wenn nein: Alle bekannten Projekte aus ProjektFile anzeigen
- Wechseln ins aktuelle Verzeichnis
Backup Modus
- Listen des Projektes um die Teilnehmer für das Backup zu bestimmen
- Folgendes wird für jeden Rechner der zum Projekt gehörtausgeführt:
- Prüfen ob Projektverzeichnis existiert sonst Abbruch für diesen Rechner
- Prüfen ob noch ein do.sh eines alten unausgeführten Auftrages existiert dann Abbruch für den Rechner
- Recover.db prüfen welches Projekt auf dem Rechner ist, wenn nicht das zu backupende Projekt installiert ist Abbruch
- Hexadezimale Darstellung der IP berechnen und PXE Link setzen
- Do.sh erzeugen aus $SystemDir/template/Backup.sh
- Port berechnen
- Ersetzen der für jeden Rechner individuellen Variablen mit den aktuellen Werten:
- $TRANSFERMETHODE
- $SystemDir
- $ClientSystemDir
- $HEXIP
- $DataDir
- $AProjectName
- $Count
- $bs_Client
- $bs_Server
- $IP
- $Client_Name
- $Server_IP
- $User
- $Port
- $File
- Starten des Clients mit etherwake
- 0,5 Sekunden warten (damit nicht alle Rechner zu gleich einschalten und durch Spannungsspitzen Beschädigungen entstehen)
Restore Modus
- Listen des Projektes um die Teilnehmer für das Backup zu bestimmen
- Folgendes wird für jeden Rechner der zum Projekt gehörtausgeführt:
- Prüfen ob Projektverzeichnis existiert sonst Abbruch für diesen Rechner
- Prüfen ob noch ein do.sh eines alten unausgeführten Auftrages existiert dann Abbruch für den Rechner
- Recover.db prüfen welches Projekt auf dem Rechner ist, wenn nicht das zu backupende Projekt installiert ist Abbruch
- Hexadezimale Darstellung der IP berechnen und PXE Link setzen
- do.sh erzeugen aus $SystemDir/template/Restore.sh
- Port berechnen
- Ersetzen der für jeden Rechner individuellen Variablen mit aktuellen Werten (Details siehe Backup Mode)
- Starten des Clients mit Etherwake
- 0,5 Sekunden warten (damit nicht alle Rechner zu gleich einschalten und durch Spannungsspitzen Beschädigungen entstehen)
© Torsten Höfler, Christian Burkert, Martin Telzer, Mirko Opitz, Andre Lichei, Daniel Röder, 26.02.2004