View Full Version : Logging von FTP Überträgen
Hallo Zusammen,
mich würde heute interessieren wie Ihr einen Zeitstempel in eine Logging Datei schreibt.
Im Regelfall machen wir einen OVRDBF(OUTPUT) auf eine Loggingdatei. Das Problem hierbei ist dass der FTP-Server mit keinem Datum oder Uhrzeit rausruckt.
Ich bin heute auf folgendes gestoßen
Warum nicht einfache ein:
QSH CMD('now=$(date) && echo "<<Abruf>> $now" >>
/QSYS.LIB/BIBL.LIB/QFTPSCRIPT.FILE/LOGGING.MBR')
davor schreiben?
Die SQL-Variante mit Alias würde auch gehen -> mehr Zeilen
Der RPG-Weg mit einen Write auf die Datei auch -> viel mehr Zeilen
Was stören dich ein paar Zeilen Code, da man dies nur einmalig macht?
Schreib doch ein kleines RPG dass in eine Datei OUTPUT ein Datum schreibt.
holgerscherer
02-11-14, 19:52
Was stören dich ein paar Zeilen Code, da man dies nur einmalig macht?
Schreib doch ein kleines RPG dass in eine Datei OUTPUT ein Datum schreibt.
Man könnte allerdings auch auf die Ausgabedatei einen Trigger packen, der ...
;-h
Nun ja, wenn die Ausgabedatei konstant ist...
Leider erlaubt ja ein Trigger kein CLRPFM mehr.
holgerscherer
03-11-14, 08:06
Nun ja, wenn die Ausgabedatei konstant ist...
Leider erlaubt ja ein Trigger kein CLRPFM mehr.
Das kann man ja vorher erledigen :)
-h
Die Lösung das über ein RPG-Programm zu lösen ist schön+richtig+naheliegend.
Ich fand nur die Lösung interessant da man den Pfad des "scriptens" quasi beibehält und ich mir hier keine Abhängigkeit von einem anderen RPG-Programm schaffe.
Gut die Qshell ist auch eine Abhängigkeit aber die ist systemseitig wohl immer dabei.
Grüße & Danke
@holgerscherer
hmm... ein Trigger..jetzt wirds crazy. Ich kann mich irgendwie errinnern dass Trigger "Teufelszeug" sind. Aber durchaus interessant.
Wenn das Zielsystem auch ein IBM i ist, und man drüben Programme aufrufen darf, dann kann man ein kleines CL aufrufen, das als Fehlernachricht Datum + Uhrzeit ausgibt.
PGM
DCL VAR(&QDATETIME) TYPE(*CHAR) LEN(20) /* 12345678901234567890 */
RTVSYSVAL SYSVAL(QDATETIME) RTNVAR(&QDATETIME) /* JJJJMMTTHHNNSSXXXXXX */
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA(&QDATETIME) MSGTYPE(*ESCAPE)
ENDPGM
Und im Skript aufrufen, sieht dann z.B. so aus:
ftp> quote rcmd call Bibliothek/programm
550-Error occurred on command call Bibliothek/programm.
550 20141112100454823942..
ftp>
Den "Error" muss man natürlich ignorieren, aber das *ESCAPE muss sein, sonst sagt der nur, dass der Befehl successful war und sonst nichts.
Volle Kontrolle hat man mit Scott Klements FTPAPI, ist aber auch ein völlig anderer Lösungsansatz. http://www.scottklement.com/ftpapi/
Wie wärs mit einem Journal?
Bei einem CRTPF/Create Table wird die Tabelle automatisch journalisiert, wenn das System ein Journal findet.
Bei einer statischen Ausgabedatei bleibt auch das Journal statisch.
Vorteil: Auch nach CLRPFM stehen die Daten im Journal. Per RTVJRNE in Datei kann man das dann auch auswerten.
Für Incomming FTP geht es nur über die System-API's (WRKREGINF) und die Ausgabe zu steuern.
schon zu kompliziert angefangen:
qsh cmd('date >> /QSYS.LIB/DSTERNB1.LIB/QRPGLESRC.FILE/MUELL.MBR')
was allerdings danach alles so an Vorschlägen kommt...
Könnte man da nicht noch aus einem REXX ein PHP Programm über CGI aufrufen, das eine eMail verschickt, die automatisch empfangen wird und eine Aktion auslöst?
D*B
@Dieter
Und das geht:confused:?