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)
- Windows: nur 32-bit-Version
- 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.
- Python in der Version 2.6 oder 2.7
- 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, --individual_parameters=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.