Headless-Client
Informationen
Der Headless-Client wird für die Durchführung von Batch-Jobs benötigt, d.h. für serverseitig auszuführende Aufgaben ohne Benutzerinteraktion, die regelmäßig über einen Scheduler (Task Manager unter Windows bzw. Cron unter Linux) angestoßen werden.
Voraussetzung für die Einrichtung des Headless-Clients sind fundierte Kenntnisse in den jeweiligen administrativen Fachgebieten.
Voraussetzungen
Auf dem System, auf dem der Headless-Client installiert und gestartet wird (typischerweise der Applikationsserver, es kann aber auch ein beliebiger Client sein), muss Folgendes installiert sein:
Python in der Version 2.6 oder 2.7
Windows: nur 32-bit-Version
Kostenloser Download: http://python.org/ftp/python/2.7.3/python-2.7.3.msi
Linux: 64- oder 32-bit-Version
In allen gängigen, aktuelleren Distributions-Repositories vorhanden (ansonsten http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz)
Der Headless-Client steht im Installationsverzeichnis des PLANTA-Servers im Unterverzeichnis
HeadlessClient
zur Verfügung. Es ist nur das Kopieren zu einem geeigneten Pfad erforderlich (z.B. Windows: C:\PLANTA\Jobs\Headless oder Linux: /planta/jobs/headless)Das bereitgestellte Headless-Client-Paket ist plattformunabhängig und kann sowohl für Windows als auch für Linux verwendet werden.
Ein Standard-Client ist auf dem jeweiligen System für den Headless-Client nicht erforderlich.
Der PLANTA-Server, mit dem sich der Headless-Client verbindet, muss gestartet sowie bereit sein, Client-Verbindungen entgegenzunehmen.
Details
Das Python-Startskript des Headless-Cients,
planta_headless.py
, erhält alle Parameter über die Kommandozeile, bis auf das Passwort, das aus Sicherheitsgründen von einer Datei gelesen wird.Diese Datei enthält den bcrypt-verschlüsselten Hash des Passworts des PLANTA-Benutzers und sollte nur von dem Anwender lesbar sein, der berechtigt ist, Jobs mit diesem PLANTA-Benutzer zu starten.
Das Erfassen dieser Passwort-Datei im entsprechend gesicherten Headless-Verzeichnis und das Verwenden der oktalen Zugriffsberechtigungen
0400
sollten ausreichen, um ein gewisses Maß an Sicherheit zu gewährleisten, obgleich alle weiteren Zugriffskontrollen, die dem Administrator zur Verfügung stehen, unterstützt werden.Zunächst wird die Datei bei Aufruf des Headless-Clients erstellt durch Angabe einer nicht vorhandenen Datei unter einem Pfad, in dem der Benutzer exklusive Lese- und Schreibrechte hat.
In diesem Fall wird der Headless-Client einmal nach dem Passwort fragen und nach erfolgreichem Einloggen den dazugehörigen Hash in einer neu angelegten Passwort-Datei mit dem vorgegebenen Namen speichern.
Durch Aufrufen des Headless-Clients mit Parameter
--help
(also z.B.python planta_headless.py --help
) werden die Nutzungsinformationen anzeigt.Standardmäßig wird keinerlei Ausgabe erzeugt, da z.B. der Cron-Daemon unter Linux üblicherweise sämtliche Konsolenausgaben als E-Mail an die zuständigen Administratoren versendet. Wenn eine Ausgabe zu Testzwecken gewünscht ist, kann mit dem Parameter
--verbose
, ggf. verbunden mir einer Dateiumleitung, gearbeitet werden.Der OS Login-Mechanismus spiegelt sich auch Headless-Client wider.
Abwärtskompatibilität für Anwender, die vom erweiterten OS-Login keinen Gebrauch machen, ist gegeben.
Wer erhöhte Anforderungen an die Sicherheit des Systemzugangs hat, dem ist die Challenge-Response-Authentication besonders zu empfehlen.
Parameter
Optionen
Parameter | Erläuterung |
---|---|
--version | Zeigt die Versionsnummer an und beendet das Programm. |
-h, --help | Zeigt die Hilfe-Nachricht an und beendet das Programm. |
-q, --quiet | Unterdrückt alle Ausgaben (Voreinstellung) |
-v, --verbose | Jedesmal, wenn der Parameter zusätzlich gesetzt wird (z. B. -v -v... oder -vv...), erhöht sich der "Verbositäts-Level" (Höchst-Level 3): Info-Nachricht..., XML versendet..., etc. |
Verbindungsparameter
Parameter | Erläuterung |
---|---|
-s HOST:PORT, --service=HOST:PORT | Verbindung zum Server |
-t TIMEOUT, --timeout=TIMEOUT | Wartezeit bis zum Job-Abschluss in Sekunden. -1 für keinen Time-out |
Login-Parameter
Parameter | Erläuterung |
---|---|
-u USER_NAME, --user=USER_NAME | Benutzername zum Einloggen ins PLANTA-System |
-a TYPE, --auth_type=TYPE | verwendeter Authentifizierungstyp zum Einloggen ins PLANTA-System: "osuser" oder "challenge" |
-p SECRET_FILE, --secret=SECRET_FILE | Datei, die den Passwort-Hash enthält |
-i INDIVIDUAL_PARAMETERS, | Parameter für die gestartete Sitzung; beliebiger Text, z.B.: "{para1:'value1',para2:'value2'}" |
Job-Spezifikationen
Parameter | Erläuterung |
---|---|
-m MOD_ID, --module=MOD_ID | Der Job ruft das Modul mit der angegebenen ID auf dem Server auf. |
-f PYTHON_FILE, --py_file=PYTHON_FILE | Der Job führt eine Python-Datei auf dem Server aus. |
-c PYTHON_CODE, --py_code=PYTHON_CODE | Der Job führt einen Python-Code-Ausschnitt (Snippet) auf dem Server aus. |
Rückgabecodes
Werte
0: Ok, Jobs wurden erfolgreich abgeschlossen
1: Socket- oder Verbindungsfehler
2: Parameterfehler
3: Time-out, während der Server Jobs bearbeitet hat
Das weist nicht unbedingt auf einen Fehler hin. Die Jobs werden bearbeitet, bis sie abgeschlossen sind. Der Client trennt jedoch vorher die Verbindung.4: Authentifizierung fehlgeschlagen
5: Unerwartete Ausnahme (momentan innerhalb der Authentifizierung über den Typ "challenge")
6: Login-Time-out: wenn Login länger als 20 Sekunden dauert
7: Server beendet die Sitzung während der Ausführung eines Jobs
8: Interner Server-Fehler
9: Es konnte kein geöffnetes Modul gefunden werden (notwendig zur Ausführung von Jobs)
Time-out des Headless-Clients
Hinweis
Je nach Time-out-Parameter und Aktionslaufzeit beendet sich der Headless-Client sofort nach Aktionsstart, nach fest definierter Zeitspanne oder erst nach Beendigung der Aktion.
Ohne Angabe eines Time-outs wird eine Aktion lediglich angestoßen, ohne auf Beendigung der Session zu warten.
Nur mit Parameter --timeout=-1 wird sichergestellt, dass der Headless-Client genauso lange läuft wie die Session.
Um sicherzustellen, dass ein Batch-Job nur einmal gleichzeitig laufen kann, wie dies z.B. mit dem Task Scheduler von Microsoft Windows möglich ist, ist die Angabe dieses Parameters unerläßlich.