Technik/Installation

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,
--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.