Hi Christian,
der ursprüngliche Plan war, da wir drei Dateien mit demselben Zeitstempel benötigen, das mit einem
ls *zeitstempel* | wc -l
abzufragen und dann das Ergebnis des PREP_PROCESS auf eben 3 abzufragen. Klappt leider nicht wunschgemäß, wenn gar keine Datei vorhanden ist.
Wir haben jetzt eine pragmatische Lösung mit drei Abfragen, das funktioniert einwandfrei. Eleganter könnte man das sicher auch noch mit einem Skript auf dem Agent erledigen. Noch pfiffiger, Script generieren, übertragen und ausführen:) Der Phantasie sind da ja kaum Grenzen gesetzt.
!Script:: PSET &result# = 'N'
: SET &datumhnd# = PREP_PROCESS(&host#,"UNIXCMD","*","CMD=find &in_absolut# -name &inputpattern#",,"UC_LOGIN=UNIX_UC4")
: PROCESS &datumhnd#
: PSET &result1# = GET_PROCESS_LINE(&datumhnd#)
: ENDPROCESS
: PRINT 'Ergebnis1:&result1#'
: CLOSE_PROCESS &datumhnd#
: IF &result1# <> ''
: SET &inputpattern2# = STR_SUB ( &inputpattern2#, "JJJJMM", &UDAT_JJJJMM# )
: SET &datumhnd2# = PREP_PROCESS(&host#,"UNIXCMD","*","CMD=find &in_absolut# -name &inputpattern2#",,"UC_LOGIN=UNIX_UC4")
: PROCESS &datumhnd2#
: PSET &result2# = GET_PROCESS_LINE(&datumhnd2#)
: ENDPROCESS
: PRINT 'Ergebnis2:&result2#'
: CLOSE_PROCESS &datumhnd2#
: IF &result2# <> ''
: SET &inputpattern3# = STR_SUB ( &inputpattern3#, "JJJJMM", &UDAT_JJJJMM# )
: SET &datumhnd3# = PREP_PROCESS(&host#,"UNIXCMD","*","CMD=find &in_absolut# -name &inputpattern3#",,"UC_LOGIN=UNIX_UC4")
: PROCESS &datumhnd3#
: PSET &result3# = GET_PROCESS_LINE(&datumhnd3#)
: ENDPROCESS
: PRINT 'Ergebnis3:&result3#'
: CLOSE_PROCESS &datumhnd3#
: IF &result3# <> ''
: SET &result# = 'Y'
: ENDIF
: ENDIF
: ENDIF
: IF &result# = 'Y'
: SET &OBJECTTOSTART# = 'JOBP.CLNG#BSL@DOWNLOAD'
: INCLUDE JOBI.UC4#BASIS@START_IF_NOT_RUNNING
: PRINT 'Objekt wird gestartet.'
: ELSE
: PRINT 'Objekt wird nicht gestartet.'
: ENDIF
Und eben stelle ich fest, dass der "ls *** | wc -l" eigentlich sogar funktionieren müsste:
[
uc4@uc4-1.integ /tmp]$ ls 1 2 3 | wc -l
ls: 1: Datei oder Verzeichnis nicht gefunden
ls: 2: Datei oder Verzeichnis nicht gefunden
ls: 3: Datei oder Verzeichnis nicht gefunden
0
[
uc4@uc4-1.integ /tmp]$
echo $?0[
uc4@uc4-1.integ /tmp]$
Ich hatte seinerzeit zum Test nur mit dem ls probiert. In pipe mit dem wc muss das funktionieren, weil Fehlercodes über eine pipe nicht transportiert werden und der wc geht ja immer gut. Ausnahme bash-option pipefail. Wieder was dazugelernt. Tja, man muss nur miteinander reden :)
Sollte dann so funktionieren:
:PSET &result# = 'N'
:SET &datumhnd# =
PREP_PROCESS(&host#,"UNIXCMD","*","CMD=
ls &in_absolut#&inputpattern# | wc -l",,"UC_LOGIN=UNIX_UC4")
:PROCESS &datumhnd#
:PSET &result# = GET_PROCESS_LINE(&datumhnd#)
:ENDPROCESS
:PRINT 'Ergebnis:&result#'
:CLOSE_PROCESS &datumhnd#
:IF &result# = 3
: SET &OBJECTTOSTART# = 'JOBP.CLNG#BSL@DOWNLOAD'
: INCLUDE JOBI.UC4#BASIS@START_IF_NOT_RUNNING
: PRINT 'Objekt wird gestartet.'
:ELSE
: PRINT 'Objekt wird nicht gestartet.'
:ENDIF
Ich probier das in Kürze mal auf dem System aus und bestätige das dann nochmal.
Vielen Dank Christian, mit Deiner Frage hast Du mir nochmal eine sehr gute Denkanregung gegeben. Kommst Du eigentlich zum Stammtisch in München? Soll angeblich am 15.9. stattfinden. Ein Betriebskollege will da gerne hin und ich bin eh ein alter Münchner...
Viele Grüße
Manfred