Hinweis

Schritt 1: Einrichtung eines Benutzers in PLANTA project

Vorgehensweise

Schritt 2: Erstellung/Einrichtung eines Makros mit der gewünschten Funktionalität

Vorgehensweise

  • Im Modul Module ein neues Modul anlegen.
  • Python-Makro für den gewünschten Einsatzzweck ergänzen.
  • Das Modul für den Batch-Benutzer als Startup-Makro, das bei jeder Anmeldung dieses Benutzers ausgeführt wird, definieren.
    • Alternativ im Start-Skript des Headless-Clients im Parameter PLANTA_MODULE die Modul-ID angeben (siehe hier).

Schritt 3: Manueller Start des Headless-Clients zur Erzeugung der Passwort-Datei

Vorgehensweise

  • Aufruf-Template
    • Hinweis: dieser Befehl sowie die folgenden Beispiele sind einzeilig und werden nur aus Gründen der Lesbarkeit ggf. umgebrochen:

<Python-Interpreter> <Headless-Pfad>planta_headless.py --service=<Server>:<Port> --user=<BATCH-User> --auth_type=challenge --secret=<PW-Datei>

ParameterBeschreibungBeispiel WindowsBeispiel Linux
<Python-Interpreter>Aufruf des jew. Python-InterpretersC:\Python27\python.exe/usr/local/bin/python2.7
<Headless-Pfad>Verzeichnispfad des Headless-Clients, absolut:
oder relativ zum aktuellen Verzeichnis:
C:\PLANTA\Jobs\Headless\
.\
/planta/jobs/headless/
./
<Server>Name oder IP-Adresse des PLANTA Serverslocalhost (wenn Ausführung auf Applikationsserver)
planta4711.planta.de
10.210.47.11
localhost (wenn Ausführung auf Applikationsserver)
planta4711.planta.de
10.210.47.11
<Port>Verbindungsport zum ServiceStandard ist 21000 + Systemnr., z.B. 21001Standard ist 21000 + Systemnr., z.B. 21001
<BATCH-User>Name des PLANTA project Batch-BenutzersBATCHBATCH
<PW-Datei>Pfad u. Name der zu erzeugenden Passwort-Datei.\auth_file./auth_file


Beispiel Windows

C:\Python27\python.exe C:\PLANTA\Jobs\Headless\planta_headless.py --service=planta4711:21001 --user=BATCH --auth_type=challenge --secret=C:\PLANTA\Jobs\Headless\auth_file

Beispiel Linux

/usr/local/bin/python2.7 ./planta_headless.py --service=localhost:21210 --user=BATCH --auth_type=challenge --secret=./auth_file

  • Passworteingabe (das Passwort wird in einer verschlüsselter Datei abgelegt).
  • Einrichten der Rechte für die neu erstellte verschlüsselte Passwort-Datei (Schreib-/Leserechte ausschließlich für den Ausführenden des Python-Programms).

Schritt 4: Einrichtung des Jobs

Vorgehensweise

  • Hierfür die folgenden Shell-/Batch-Skript-Templates anpassen:
    • Beim folgenden Skript im Abschnitt Parameter anpassen: die passenden Werte eintragen.
    • Als Datei (z.B. namens Headless.bat unter Windows oder namens headless.bsh unter Linux) im Headless-Cient-Verzeichnis abspeichern. Der Datums-Zeitstempel ist hier abhängig vom lokalen Format und muss ggf. angepasst werden.
  • Beispiel Windows:
@ECHO OFF
REM BATCH
REM PLANTA Headless-Client: Durchführung von Batch-Jobs
REM Parameter anpassen:
REM --->
SET PYTHON="<Pfad zu Python (V. 2.6 oder 2.7)>"
SET HEADLESS_DIR="<Pfad zum Headless Client (PLANTA_PY)>"
SET SERVICE=<Serveradresse:Portnummer>
SET USER=BATCH
REM Falls das Arbeitspaket als Startmodul des Batch-Users definiert ist, bleibt dieser Parameter leer,
REM sonst wird hier die Modul-ID des auszuführenden Moduls eingetragen:
SET PLANTA_MODULE=
IF NOT "%PLANTA_MODULE%"=="" SET MODULE_PARAM=--module=%PLANTA_MODULE%
IF "%PLANTA_MODULE%"=="" SET MODULE_PARAM=
REM Falls Logging gewünscht ist, die folgenden Variablen aktivieren,
REM sowie unten den Skript-Aufruf mit Logging aktivieren und den ohne Logging deaktivieren:
REM SET LOG_DIR="<Pfad des Log-Verzeichnisses>"
REM SET LOGFILE="<Präfix für die Log-Datei (z.B. PLANTA_Headless)>"
REM SET DATETIME=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
REM <---
SET AUTH_FILE=".\auth_file"
SET PLANTA_PY=".\planta_headless.py"
SET PLANTA_SH=%PLANTA_PY% --service=%SERVICE% --user=%USER% --auth_type=challenge --secret=%AUTH_FILE% %MODULE_PARAM%
cd %HEADLESS_DIR%
REM Variante ohne Logging:
%PYTHON% %PLANTA_SH% %*
REM Variante mit Logging:
REM forfiles -p %LOG_DIR% -m %LOGFILE%*.log -d -7 -c "cmd /c del @path"
REM %PYTHON% %PLANTA_SH% %* --timeout=-1 -vvv >> %LOG_DIR%\%LOGFILE%_%DATETIME%_%USER%.log
BASH
  • Beispiel Linux:
#!/bin/bash
# PLANTA Headless-Client: Durchführung von Batch-Jobs
# Parameter anpassen:
# --->
PYTHON="<Pfad zu Python (V. 2.6 oder 2.7)>"
HEADLESS_DIR="<Pfad zum Headless Client (PLANTA_PY)>"
SERVICE="<Serveradresse:Portnr.>"
USER="BATCH"
# Falls das Arbeitspaket als Startmodul des Batch-Users definiert ist, bleibt der folgende Parameter leer,
# sonst wird hier die Modul-ID des auszuführenden Moduls eingetragen:
PLANTA_MODULE=""

if [[ -z $PLANTA_MODULE ]]
then
    MODULE_PARAM=""
else
    MODULE_PARAM="--module=$PLANTA_MODULE"
fi

# Falls Logging gewünscht ist, die folgenden Variablen aktivieren, 
# sowie unten den Skript-Aufruf mit Logging aktivieren und den ohne Logging deaktivieren:
#LOG_DIR="<Pfad des Log-Verzeichnisses"
#LOGFILE="<Präfix für den Log-Datei-Namen (z.B. PLANTA_Headless)>"
#DATETIME=`date +20%y-%m-%d_%H-%M-%S`
# <---
AUTH_FILE="./auth_file"
PLANTA_PY="planta_headless.py"
PLANTA_SH="./$PLANTA_PY --service=$SERVICE --user=$USER --auth_type=challenge --secret=$AUTH_FILE $MODULE_PARAM"
cd $HEADLESS_DIR
# Variante ohne Logging:
$PYTHON $PLANTA_SH $*
# Variante mit Logging:
#find $LOG_DIR -type f -name "$LOGFILE*.log" -mtime +7 -print0 | xargs -0 rm -f
#$PYTHON $PLANTA_SH $* --timeout=-1 -vvv >> $LOG_DIR/$LOGFILE\_$DATETIME\_$USER.log
BASH

Schritt 5: Einrichtung des zeitgesteuerten Aufrufs

Hinweis

  • Hier sind administrative Berechtigungen erforderlich.

Vorgehensweise

  • Einrichtung
    • unter Windows: mit dem Task Manager (bzw. Aufgabenplanung)
    • unter Linux: als Cron Job
  • In beiden Fällen weiß der Job nichts von Umgebungsvariablen etc. Alles, was er wissen muss, muss in den Shell-Skripten mitgegeben werden (z.B. absolute Pfade verwenden).

Hinweise

  • Der Headless-Client startet üblicherweise ein PLANTA-Makro, ohne auf dessen Beendigung zu warten.
  • Dies kann durch den Parameter timeout=-1 verhindert werden.
  • In diesem Fall wartet der Headless-Client auf die Beendigung des Makros.
  • Siehe auch die Logging-Variante in den oben aufgeführten Shell-Skripten.