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
--versionZeigt die Versionsnummer an und beendet das Programm.
-h, --helpZeigt die Hilfe-Nachricht an und beendet das Programm.
-q, --quietUnterdrückt alle Ausgaben (Voreinstellung)
-v, --verboseJedesmal, 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:PORTVerbindung zum Server
-t TIMEOUT, --timeout=TIMEOUTWartezeit bis zum Job-Abschluss in Sekunden. -1 für keinen Time-out

Login-Parameter

Parameter Erläuterung
-u USER_NAME, --user=USER_NAMEBenutzername zum Einloggen ins PLANTA-System
-a TYPE, --auth_type=TYPEverwendeter Authentifizierungstyp zum Einloggen ins PLANTA-System: "osuser" oder "challenge"
-p SECRET_FILE, --secret=SECRET_FILEDatei, 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_IDDer Job ruft das Modul mit der angegebenen ID auf dem Server auf.
-f PYTHON_FILE, --py_file=PYTHON_FILEDer Job führt eine Python-Datei auf dem Server aus.
-c PYTHON_CODE, --py_code=PYTHON_CODEDer 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.