iservchk-Skripte#
Die iservchk-Skripte, oder auch Module genannt, liegen im Verzeichnis /etc/iserv/chk.d
und werden aus Vorlagen in /usr/share/iserv/iconf/etc/iserv/chk.d/
generiert. Die Skripte werden, sofern sie mit einer Nummer beginnen und keine Metainformationen enthalten, der Reihe nach abgearbeitet. Neuere iservchk-Skripte ohne Nummer am Anfang müssen Metainformationen enthalten, welche festlegen, wann sie ausgeführt werden sollen. Es können mehrere Skripte gleichzeitg abgearbeitet werden, wenn die Metainformationen das zulassen. IServ selbst bringt folgende Skripte, die aus verschiedenen IServ-Modulen stammen, mit:
Konfiguration |
|
|
Die Konfiguration verarbeiten und vervollständigen |
|
Lokalisierung kompilieren |
|
Kernelparameter setzen |
|
Namensauflösung konfigurieren |
Systemkomponenten |
|
|
Systemnahe Dienste |
|
System- und Sitzungs-Manager systemd |
|
Netzwerk |
|
PostgreSQL Cluster Upgrade |
|
Datenbankserver PostgreSQL |
|
Nameserver bind |
|
Client- und Webserverzertifikate |
|
Paketmanager |
|
Antivirus Avast |
|
Systemprotokollierung syslog |
|
Network Time Protocol Dienst (Zeitsynchronisierung) |
Interne Dienste (werden von IServ benötigt) |
|
|
Mailserver Cyrus |
|
Datei- und Druckdienste für Windows Clients |
|
IServ Authentifizierungsdienst |
Benutzer und Gruppen |
|
|
IServ Systemgruppen |
Benutzer-Dienste (können abgeschaltet werden) |
|
|
Steuerung ACPI-Ereignisse (Ausschalten, Neustart, Standby, …) |
|
Webserver apache2 |
|
Steuerung USV (unterbrechungsfreie Stromversorgung) |
|
Zeroconf Netzwerkkonfiguration Avahi |
|
Druckserver CUPS |
|
DHCP-Server |
|
Paketverwaltung |
|
Kollaborativer Texteditor (IServ Modul Texte) |
|
Message Transfer Agent (MTA) Exim |
|
Überwachung von Logdateien auf fehlgeschlagene Anmeldeversuche |
|
RADIUS-Server FreeRADIUS |
|
Mailserver Greylisting |
|
Bootloader GRUB2 |
|
Dateiorientierte Ereignissteuerung incron |
|
IServ 3 |
|
Steuerung/Überwachung Linux Software RAID |
|
Datenbankserver MySQL/MariaDB |
|
Internetzugriff aus dem LAN |
|
Zentrales Monitoring der IServs |
|
Webserver nginx |
|
IServ Modul Pläne |
|
FTP-Server ProFTPd |
|
Festplattenüberwachung |
|
Spamfilter SpamAssassin |
|
Webproxy squid |
|
SSH-Server OpenSSH |
|
TFTP-Server |
|
IServ Modul Stundenplan |
|
Netfilter Protokolldienst Ulogd |
|
Logdateianalyse Webalizer |
|
IServ Modul WLAN |
Wartung |
|
|
Regelmäßig ausgeführte Wartungsaufgaben |
|
IServ Berechtigungen und Rollen |
|
IServ Modul Import |
Aufräumen |
|
|
Überbleibsel von alten Versionen entfernen |
Softwareverteilung |
|
|
IServ Modul Softwareverteilung: Registry Patch Windows 10 |
|
IServ Modul Softwareverteilung: Registry Patch Windows 7 |
|
IServ Modul Softwareverteilung: Registry Patch Windows 8.1 |
Voreinstellungen |
|
|
Alte Daten konvertieren, Standardeinstellungen setzen |
|
Automatische Zonenverwaltung und dynamischer DNS Client |
|
IServ Display: Linux-basierendes Anzeigesystem für den Infobildschirm |
Für neue Skripte sollte ein Name ohne vorangestelle Nummer gewählt werden. Skripte mit vorangestellter Nummer entsprechen dem Legacy-Format, bei dem keine expliziten Abhängigkeiten festgelegt werden müssen.
Syntax#
Die Skripte sind einfache Textdateien.
Befehle beginnen immer in der ersten Spalte, umgebrochene Zeilen werden mit 2 Leerzeichen, in Ausnahmefällen auch Tabs, eingerückt.
Die Quoting-Regeln für die Parameter entsprechen denen der Bash.
Für Dateinamen ist Globbing aktiv, d. h. Eingaben mit Zeichen wie *, ?, {...}
oder [...]
werden ggf. zu einer Dateiliste erweitert.
Groß-/Kleinschreibung wird bei den Befehlen nicht unterschieden, der Übersicht halber sollten sie aber in der hier angegebenen Form verwendet werden. Einfache spitze Klammern geben einzelne Parameter an, doppelte solche, die mehrfach angegeben werden können. Eckige Klammern stellen Shell-Skripte dar, die nicht gequotet werden.
Die Umgebungsvariable $REPAIR
gibt bei den Befehlen Test und Shell an, ob während der bisherigen Skriptausführung Reparaturen durchgeführt wurden.
Am Ende des Skripts muss immer eine Leerzeile und ein Zeilenumbruch stehen, da die einzelnen Skripte später auseinandergenommen werden und bei Fehlen der Leerzeile und des Zeilenumbruches sonst nicht vorhersehbare Fehler entstehen können.
Metainformationen#
Metainformationen werden über spezielle Befehle hinterlegt. Hierbei muss beachtet werden, dass das Hinzufügen von Metainformationen automatisch dafür sorgt, dass ein Skript nicht länger wie ein Skript im Legacy-Format behandelt wird, d.h. es erhält numerische Vorgänger nicht mehr als Abhängigkeit, ohne dass diese explizit angegeben werden müssen.
- Meta::Description <Text>
Fügt dem aktuellem Modul eine Beschreibung hinzu.
Meta::Description "Konfiguriert das Netzwerk des IServs"
- Meta::After <<Modul>>
Spezifiziert, dass das aktuelle Modul nach den angegebenen Modulen ausgeführt werden muss. Der Befehl darf mehrfach genutzt werden. Dabei werden vorherige Einträge ergänzt, aber nicht überschrieben.
Meta::After "system" "network"
- Meta::Before <<Modul>>
Komplementär von After.
- Meta::Requires <<Modul>>
Spezifiziert, dass das aktuelle Modul nach den angegebenen Modulen ausgeführt werden muss und die Konfiguration dieser Module darf nicht fehlschlagen, da sonst dieses Modulskript nicht ausgeführt wird. Der Befehl darf mehrfach genutzt werden. Dabei werden vorherige Einträge ergänzt, aber nicht überschrieben.
Meta::Requires "postgresql"
- Meta::RequiredBy <<Modul>>
Komplementär von Requires.
Befehle#
- Check <<Files>>
Repariert die angegebenen Dateien mit iconf.
Check /etc/dhcpd.conf
Repariert die Konfigurationsdatei von dhcpd mit iconf.
- Touch <<Files>>
Falls die Datei noch nicht existiert, wird sie leer erstellt.
Touch /etc/named.conf.local /var/named/{forward,reverse}.local.zone
Erstellt drei leere lokale Konfigurationsdateien für named, falls diese noch nicht existieren.
- Link <Source> <Destination>
Erstellt einen Symlink auf die Zieldatei unter dem Namen der Quelldatei.
Link /opt/iserv/sbin/daily /etc/cron.daily/iserv
Erstellt einen Symlink, damit cron täglich ein Skript aufruft.
- Remove <<Files>>
Löscht die angegebenen Dateien, nicht jedoch Verzeichnisse.
Remove /etc/sysconfig/iptables
Löscht die gespeicherte Konfiguration von iptables.
- Remove-R <<Files>>
Löscht die angegebenen Dateien oder Verzeichnisse mit allen Unterverzeichnissen. Der Befehl kann nicht für Verzeichnisse der Hauptebene, wie z. B.
/etc
, aufgerufen werden.Remove-R /usr/local/MailScanner
Löscht die alte MailScanner-Konfiguration mit allen Unterverzeichnissen.
- Insert <File> <String>
Falls String noch nicht in der Datei vorkommt, wird er hinten als neue Zeile angefügt.
Insert /etc/httpd/conf/httpd.conf "Include /etc/httpd/conf/httpd.iserv.conf"
Bindet die IServ-Einstellungen in die Apache-Konfiguration ein.
- ChPerm <Mode> <Owner> <<Files>>
Weist den Dateien die angegebenen Rechte und Besitzer zu. Mode muss in Oktalschreibweise angegeben werden, Owner hat das gleiche Format wie beim Linux-Befehl chown. Die Rechte und Besitzer werden nicht rekursiv auf die Inhalte eines Verzeichnisses angewendet.
ChPerm 0460 squid:admins /etc/squid/{allow,deny}.local
Gibt Squid Leserechte und den Mitgliedern der Gruppe Admins Vollzugriff auf die lokale Black- und Whitelist.
- ChMod <Mode> <<Files>>
Weist den Dateien die angegebenen Rechte zu. Die Rechte werden nicht rekursiv auf die Inhalte eines Verzeichnisses angewendet.
ChMod 0640 /etc/shadow
Gibt dem Besitzer Vollzugriff und der Gruppe Leserechte auf die Shadow-Datei.
- ChOwn <Owner> <<Files>>
Weist den Dateien den angegebenen Besitzer zu. Owner hat das gleiche Format wie beim Linux-Befehl chown. Die Besitzer werden nicht rekursiv auf die Inhalte eines Verzeichnisses angewendet.
ChOwn root:shadow /etc/shadow
Setzt den Besitzer und Gruppe der Shadow-Datei auf root und shadow.
- MkDir <Mode> <Owner> <<Directories>>
Falls die Verzeichnisse noch nicht existieren, werden sie mit den angegebenen Rechten und dem Besitzer neu angelegt. Mode muss oktal angegeben werden, Owner hat das gleiche Format wie beim Linux-Befehl chown.
MkDir 0700 root:root /var/log/proftpd
Erstellt ein Verzeichnis für die Logdateien von ProFTPd, auf das nur root Zugriff hat.
- Start <Unit> <<Processes>>
Der Dienst wird so konfiguriert, dass er beim nächsten Booten automatisch gestartet wird. Falls er nicht läuft oder nicht alle angegebenen Prozesse existieren, wird er über systemd gestartet. Danach wartet iservchk bis zu 30 Sekunden darauf, dass alle angegebenen Prozesse vorhanden sind. Falls kein Prozessname angegeben wird, überwacht iservchk den Start des Dienstes nicht. Die Angabe der Prozessnamen wird dringend empfohlen.
Falls bei der bisherigen Skriptausführung Reparaturen nötig geworden sind oder der Dienst veraltete Bibliotheken verwendet, wird der Dienst vorher gestoppt (siehe Befehl Stop).
Start cyrus-imapd cyrmaster imapd pop3d notifyd
Stellt sicher, dass der Dienst cyrus-imapd mit den Prozessen cyrmaster, imapd, pop3d und notifyd läuft und beim nächsten Booten automatisch gestartet wird. Falls nötig wird der Dienst neu gestartet.
- Enable <Unit>
Der Dienst wird so konfiguriert, dass er beim nächsten Booten automatisch gestartet wird.
Enable iservchk.timer
- Disable <Unit>
Der Dienst wird so konfiguriert, dass er beim nächsten Booten nicht mehr automatisch gestartet wird.
Disable iservchk.timer
- Stop <Unit> <<Processes>>
Der Dienst wird so konfiguriert, dass er beim nächsten Booten nicht automatisch gestartet wird. Falls der Dienst läuft oder ein Prozess mit einem der angegebenen Namen existiert, wird der Dienst über systemd gestoppt. Falls das nicht hilft, versucht iservchk die Prozesse mit TERM- oder KILL-Signalen zu stoppen.
Stop iserv-display xinit chromium
Stellt sicher, dass der Dienst iserv-display mit den Prozessen xinit und chromium nicht läuft und beim nächsten Booten nicht automatisch gestartet wird.
- Reload <Service> <<Processes>>
Der Dienst wird so konfiguriert, dass er beim nächsten Booten automatisch gestartet wird. Falls er nicht läuft oder nicht alle angegebenen Prozesse existieren, wird er über systemd gestartet. Danach wartet iservchk bis zu 30 Sekunden darauf, dass alle angegebenen Prozesse vorhanden sind. Falls kein Prozessname angegeben wird, überwacht iservchk den Start des Dienstes nicht. Die Angabe der Prozessnamen wird dringend empfohlen.
Falls bei der bisherigen Skriptausführung Reparaturen nötig geworden sind oder der Dienst veraltete Bibliotheken verwendet, wird der Dienst vorher neugeladen.
Reload apache2 apache2
- Test <Name> [Test] --- [Repair]
Definiert ein Test- und ein Reparaturskript, jeweils als Shell-Skript ohne Quoting. Schlägt der Test bei der Ausführung fehl, wird das Reparaturskript ausgeführt und anschließend erneut getestet. Der erste Parameter gibt den Namen für den Test an, der bei Fehlern oder beim Aufruf von iservchk mit dem Parameter -v ausgegeben wird.
Test 'group Admins' grep -qi ^Admins: /etc/passwd --- iservgroupadd Admins
Dieser Test prüft, ob die Gruppe Admins existiert, indem er den passenden Eintrag in der Datei
/etc/passwd
sucht. Falls nicht, wird die Gruppe neu erstellt.
- Test <Name> <Test> <Repair>
Alte Syntax des Test-Befehls (s. o.) mit gequoteten Parametern, nicht mehr empfohlen.
- Shell <Name> [Skript]
Führt ein eingebettetes Shell-Skript aus.
Die Anweisungen, die hinter dem Befehl stehen, werden unverändert als Shell-Skript ausgeführt. Je nach Erfolg sollte das Skript einen entsprechenden Return-Code zurückgeben. Der Parameter Name gibt einen Namen für das Skript an, der bei Fehlern oder beim Aufruf von iservchk mit dem Parameter -v ausgegeben wird.
Shell "test Perl config" perl -cwT /var/iserv/config/config.pm 2>&1
Lässt perl die Syntax der Konfigurationsdatei von IServ prüfen.
- Clean <<Directories>>
Räumt alle Dateien in dem angegebenem Verzeichnis auf, die aktuell nicht mehr von iservchk generiert werden, aber in der Vergangenheit angelegt wurden. Der Befehl kann nicht für Verzeichnisse der Hauptebene, wie z. B.
/etc
, aufgerufen werden.Clean /etc/php/8.1/fpm/pool.d
- Track <<Files>>
Weist iservchk an, die Datei in die Historie der generierten Dateien aufzunehmen. Der Einsatz dieses Befehls ist nur nötig, wenn die Datei nicht per Check oder Touch angelegt wurde.
Track /etc/php/8.1/fpm/pool.d/my-module.conf
- Forget <<Files>>
Weist iservchk an, die Datei aus der Historie der generierten Dateien zu entfernen. Der Einsatz dieses Befehls ist nur nötig, wenn die Datei nicht per Remove oder Remove-R entfernt wurde. Der Befehl kann nicht für Verzeichnisse der Hauptebene, wie z. B.
/etc
, aufgerufen werden.
- # <<Comment>>
Kommentar, der Rest des Befehls wird ignoriert.
# Jedes gelöste Problem ist einfach.
Dieses Zitat wird von iservchk ignoriert.