Info/Meldung wenn Datei eintrifft?

Hi,

das Ding funktioniert ganz gut, Danke!
Nun habe ich aber doch zwei Dinge festgestellt.

1.
In den Mails stehen immer die alten Dateien, die bereits vor langer Zeit hochgeladen wurden, noch mit dabei. Also die "logfile.txt" bzw. deren Inhalt wird bei neuen Uploads mit folgenden Mailversand nicht gelöscht. Somit wird in der "logfile.txt" immer fleißig angefügt. Habe ich was falsch gemacht oder ist das so?

2.
Wenn viele Dateien auf einmal hochgeladen werden, hagelt es auch viele E-Mails. Kann man da nicht irgendwas machen, dass erst eine bestimmte Anzahl von Dateien gesammelt wird und/oder eine bestimmte Zeit abgewartet wird, bevor die nächste Mail raus geht.

Gruß Jan
 
zu 1) Ist damit das Server-Log gemeint (ich kenne und nutze das AddOn nicht)?
Falls ja, kannst Du zum Beispiel eine regelmäßige Rotation der Logdatei einrichten, dann wird sie immer wieder neu geschrieben.
zu 2) da das Ereignis "OnFileUploaded" heißt, wird halt bei jedem vollständigen Upload ein Trigger gesetzt. Da kann man nichts dran drehen.
 
Nee, Server-Log ist nicht gemeint.
Bei einem Upload wird in eine Datei reingepinselt, was geuploadet wurde. Diese Datei wird dann per E-Mail versendet.
Wenn man nun an dem Reinpinseln nichts ändern kann, könnte man vielleicht beim Versenden der E-Mail was ändern.
Vielleicht kann man den sagen, dass der 1. nach dem Versenden einer E-Mail die pepinselte Datei bzw. deren Inhalt löschen soll und 2. erst nach 10 oder 30 Minuten wieder eine neue E-Mail versenden soll, wo in der Zeit dann auch mehrere Einträge in die Datei gepinselt werden können, die dann nach dem Versenden der E-Mail wieder gelöscht bzw. geleert wird. Ich weiß ja nicht, ob das irgendwie geht. Von dem Scripte-Zeugs hab ich kein Plan. :)

Gruß Jan
 
zu 1)

Sicherstellen das echo. >c:\logfile.txt direkt unterm token steht.
Insbesondere das die Umleitung mit einem > und nicht aus >> besteht.

zu 2)

einzelner Beitrag>> https://www.supernature-forum.de/g6...eldung-wenn-datei-eintrifft-2.html#post863787 (Update WICHTIG)

Ich hatte mal angefangen einen Counter dort reinzubauen. Das Script wurde aber so komplex, dass ich die Lust daran verloren habe.
Du könntest das Script User oder Gruppenbezogen einrichten. So kann man die Extrem Uplader rausnehmen.
 
Ich bedanke mich recht herzlich. Da habe ich doch tatsächlich bei meiner persönlichen Anpassung der Mailvorlage die dafür zuständige Zeile entfernt.

So sah meine Datei aus:
Code:
@echo off
@for /f "Tokens=1,2,3,4 delims=/. " %%a in ('date/t') do set Day=%%a
@for /f "Tokens=1,2,3,4 delims=/. " %%a in ('time/t') do set tim=%%a

echo.
echo.
echo	Neuer Upload auf dem FTP-Server XXXXX: >>c:\logfile.txt
echo. >>c:\logfile.txt
echo	Datum		: %Date% >>c:\logfile.txt
echo	Zeit		: %tim% Uhr  >>c:\logfile.txt
echo	Datei		: %1 >>c:\logfile.txt
echo	Größe		: %2 kb >>c:\logfile.txt
echo	Uploader	: %4 >>c:\logfile.txt
echo	Speicherort	: %3 >>c:\logfile.txt
echo. >>c:\logfile.txt
c:\blat\Blat.exe -install XXXXX.dyndns.org XXXXX@gmx.de
c:\blat\Blat.exe "C:\logfile.txt" -to XXXXX@gmx.de -server mail.gmx.net -u XXXXX@gmx.de -pw XXXXX -debug -timestamp -log c:\blat\blatSMTPlog.txt -subject "Neuer Upload auf dem FTP-Server XXXXX"

exit

Erklärbär fuer zeile 24
C:\logfile.txt = vom script erstellter inhalt der mail
info@gonetworks.de = empfaenger
192.168.0.141 = ip des mailservers
ftpserver (-u / - pw) = user und passwort des versendenten mailkontos
blatSMTPlog.txt = logdatei blatguy

Und so habe ich das jetzt abgeändert:
Code:
@echo off
@for /f "Tokens=1,2,3,4 delims=/. " %%a in ('date/t') do set Day=%%a
@for /f "Tokens=1,2,3,4 delims=/. " %%a in ('time/t') do set tim=%%a

echo. >c:\logfile.txt
echo	Neuer Upload auf dem FTP-Server XXXXX: >>c:\logfile.txt
echo. >>c:\logfile.txt
echo	Datum		: %Date% >>c:\logfile.txt
echo	Zeit		: %tim% Uhr  >>c:\logfile.txt
echo	Datei		: %1 >>c:\logfile.txt
echo	Größe		: %2 kb >>c:\logfile.txt
echo	Uploader	: %4 >>c:\logfile.txt
echo	Speicherort	: %3 >>c:\logfile.txt
echo. >>c:\logfile.txt
c:\blat\Blat.exe -install XXXXX.dyndns.org XXXXX@gmx.de
c:\blat\Blat.exe "C:\logfile.txt" -to XXXXX@gmx.de -server mail.gmx.net -u XXXXX@gmx.de -pw XXXXX -debug -timestamp -log c:\blat\blatSMTPlog.txt -subject "Neuer Upload auf dem FTP-Server XXXXX"

exit

Erklärbär fuer zeile 24
C:\logfile.txt = vom script erstellter inhalt der mail
info@gonetworks.de = empfaenger
192.168.0.141 = ip des mailservers
ftpserver (-u / - pw) = user und passwort des versendenten mailkontos
blatSMTPlog.txt = logdatei blatguy

Sicherstellen das echo. >c:\logfile.txt direkt unterm token steht.
Insbesondere das die Umleitung mit einem > und nicht aus >> besteht

Das habe ich unter Ereignisse bei "OnFileUploaded" angegeben:
Code:
C:\blat\newupload.cmd "$USR_FILENAME" $USR_FILESIZE "$USR_FILE" "$USR_NAME"

Daraus ergibt sich dann folgender Inhalt der Mail:
Code:
Neuer Upload auf dem FTP-Server XXXXX: 
 
Datum		: 03.07.2010 
Zeit		: 17:01 Uhr  
Datei		: "20091117 Kumpel 016.jpg" 
Größe		: 428329 kb 
Uploader	: "XXXXX" 
Speicherort	: "D:\Ftp Upload\XXXXX\20091117 Kumpel 016.jpg"

Lieber wäre mir bei solchen kleinen Dateien, dass der erst mal ein Sack voll Upload-Dateien sammelt, die dann alle in die Datei pinselt und dann aufgelistet mit einer Mail versendet.
So kommt nun für jeden Upload eine gesonderte Mail an. Wenn es viele Kleine sind, dann sind auch mal Mails doppelt, leer oder es werden Upload-Dateien übersprungen. Das bekommt er wahrscheinlich nicht so schnell auf die Reihe. :) Ist auch nicht so schlimm.

Na ich belasse es erst mal so, da auf mein Server eh nur ganz selten Leute zugreifen und ich eben dann auch informiert werden möchte, wenn die was hochgeladen haben, da es schon vorgekommen ist, dass ich das erst nach Wochen oder Monaten mitbekommen habe. :)
Wenn es dann mal 100 Bilder sind, muss ich dann eben mal 100 Mails löschen. :( Vielleicht gibts dafür mal irgendwann ne Lösung. :)

Ich hatte auch schon mal irgendwas Anderes, da wurde eine Textdatei geöffnet, die Aktion da reingepinselt und die bleib dann auf dem Desktop stehen oder so. Ich weiß jetzt aber nicht mehr, was das war. Das war auch nicht dumm für den Anfang. Nur wenn man gerade am Rechner was schrieb, funkte das immer dazwischen, wenn ich das recht in Erinnerung habe. Und wenn mal der Rechner aus irgendwelchen Gründen neu startet, geht die Information dann auch verloren. Da ist das per Mail schon die bessere Lösung. :)

Also, gute Arbeit! Weiter so! :)

Gruß Jan
 
Schön Formatierter Text! :)

Anleitung für eine einzelne Statusmail in der alle Uploads des Tages gelistet sind:

Event: OnFileUploaded
Code:
C:\blat\newupload.cmd " $USR_FILENAME " $USR_NAME "$USR_FILE" $USR_FILESIZE"


Folgendes Script unter C:\blat\newupload.cmd speichern
Code:
@echo off

@for /f "Tokens=1,2,3,4 delims=/. " %%a in ('date/t') do set Day=%%a
@for /f "Tokens=1,2,3,4 delims=/. " %%a in ('time/t') do set tim=%%a

:: Variablen setzen
set workfile=%windir%\temp\logfile.txt

echo.   											>>%workfile%
echo	Datum		: %Date% 						>>%workfile%
echo	Zeit		: %tim% Uhr  					>>%workfile%
echo	Datei		: %1 							>>%workfile%
echo	Größe		: %4 kb 						>>%workfile%
echo	Uploader	: %2 							>>%workfile%
echo	Speicherort	: %3 							>>%workfile%
echo. 												>>%workfile%
echo _______________________________________________>>%workfile%
exit

Event: OnEveryDay
Code:
C:\blat\mailer.cmd

Folgendes Script (Achtung Syntax - xxxx ersetzen ) unter C:\blat\mailer.cmd speichern

Code:
rem Mailer.cmd
@echo off
:: Datum / Zeit in leserliches zerlegen
@for /f "Tokens=1,2,3,4 delims=/. " %%a in ('date/t') do set Day=%%a
@for /f "Tokens=1,2,3,4 delims=/. " %%a in ('time/t') do set tim=%%a

:: Variablen setzen
set fill=%windir%\temp\logfile.txt
:: Mail versenden
c:\blat\Blat.exe -install XXXXX.dyndns.org XXXXX@gmx.de
c:\blat\Blat.exe "%fill%" -to XXXXX@gmx.de -server mail.gmx.net -u XXXXX@gmx.de -pw passwort -debug -timestamp -log c:\blat\blatSMTPlog.txt -subject "FTP Uploads vom Vortag"

:: Logfile neu aufbauen
echo. ________________________________________________________________________________ 	>%fill%
echo besuch uns: http://supernature-forum.de , Script by MaXg 									>>%fill%
echo. ________________________________________________________________________________ 	>>%fill%
echo.																					>>%fill%
echo    Uploads auf dem FTP-Server fuer den %Date% : 									>>%fill%
echo _______________________________________________________________					>>%fill%
echo.

Testen:
1.) 2-200 Dateien hochladen.
2.) C:\blat\mailer.cmd manuell starten.
 
Zuletzt bearbeitet:
So, hat bissel gedauert. Test durchgeführt.

Problem: Das Logfile wird nicht geleert!

Gruß Jan
 
Hmm. :(

Geht es denn manuell von der Kommandozeile?
1) type c:\logfile.txt
2) echo >c:\logfile.txt
3) type c:\logfile.txt


- Keine Rechte im Systemroot?
- Mit welchen Rechten läuft der G6 ?
- Versuchs mal mit dem Temp Ordner indem du in allen Scripten "c:\logfile.txt" durch %temp%\logfile.txt ersetzt.
 
Geht es denn manuell von der Kommandozeile?
1) type c:\logfile.txt
2) echo >c:\logfile.txt
3) type c:\logfile.txt

Ausführen->CMD
1) Auflistung des Inhalts
2) Zugriff verweigert
3) Auflistung des Inhalts

Start->cmd.exe->(Strg+Schift+Enter)(also als Administrator)
1) Auflistung des Inhalts
2) scheinbar nix (Logfile wird geleert bzw. mit "ECHO ist eingeschaltet (ON)." ersetzt
3) Ausgabe von "ECHO ist eingeschaltet (ON)."

Rechte? Hmmmm ...
Ich hatte bis vor kurzen alles unter einem Konto mit Admin-Rechten laufen und nun umgestellt, als eingeschränkter Benutzer. Der Server läuft als Dienst und funktioniert auch. Die Tray-Monitor.Exe im Autostart startet nicht mehr. Manueller Start der Exe verlangt immer das Admin-Passwort. Dieser Administrator-Remote-Client, oder wie der heißt, lässt sich so starten, bleibt aber nicht im Tray. Unter Werkzeuge->Taskleistensymbol will der wieder das Admin-Passwort. Was dann das Selbe wie die Tray-Monitor.exe ist.

Dumme Frage, woran sehe ich genau, mit was für Rechten der läuft?

Unter G6FTPServer.exe->Eigenschaften->Sicherheit->Benutzer->lesen, ausführen + lesen

Unter G6FTPServer.exe->Eigenschaften->Sicherheit->Erweitert->effektive Berechtigung->mein Benutzerkonto->Ordner durchsuchen/Datei ausführen + Ordner auflisten/Daten lesen + Attribute lesen + erweiterte Attribute lesen + Berechtigungen lesen

Unter c:\logfile.txt->Eigenschaften->Sicherheit->Benutzer->lesen, ausführen + lesen

Unter c:\logfile.txt->Eigenschaften->Sicherheit->Erweitert->effektive Berechtigung->mein Benutzerkonto-> fehlt nur der Haken bei Vollzugriff + Berechtigung ändern + Besitz übernehmen

Jetzt das ganze mit "%temp%\logfile.txt" getestet.
Beim Upload wird die Datei mit Inhalt erstellt. Nachsehen im Windows/Temp konnte ich nur mit Eingabe vom Admin-PW. Ausführen von Mailer.cmd, wo ich auch 2 Mal in "%temp%\logfile.txt" geändert habe, bringt ne leere Mail. Logfile im Temp ist danach noch gefüllt. Die Eigenschaften von der Datei öffnen sich nicht. Betriebssystem ist übrigens Windows7.
 
Danke für die Ausführliche Beschreibung. Die ist sehr hilfreich.

Werde die Scripte für Windows7 anpassen müssen. (Wenn das überhaupt geht.)

Melde mich mit der Lösung.
 
Für den Autostart des Tray-Icons ohne Interaktion hilft das hier:
Warnmeldung der Benutzerkontensteuerung bei Autostart-Programmen deaktivieren - Dr. Windows

Um Schreibrechte im Root-Verzeichnis zu erhalten, müsste man den Serverdienst selbst unter einem Konto mit Administrativen Rechten ausführen, was sicherheitstechnisch keine so gute Idee ist.
Eine Alternative wäre, nicht nach c:\, sondern in in ein beliebiges Unterverzeichnis c:\irgendwas zu schreiben, das funktioniert auch mit normalen Benutzerrechten.
 
Script angepasst -> Klick

Hier nochmal als pdf mit Zeilennummern und in Bunt.
 

Anhänge

  • newupload.pdf
    6 KB · Aufrufe: 381
  • mailer.pdf
    6,7 KB · Aufrufe: 421
Hi,

danke erst mal für Eure Hinweise und Bemühungen.

Zu dem Logfile habe ich mir mal folgende Gedanken gemacht bevor ich die Daten in den PDF-Dateien getestet habe.

Wenn das nun angenommen täglich versendet wird, finde ich es nicht gut, das im Tempverzeichnis abzulegen, da es ja vorkommen könnte, dass man vielleicht auch mit Hilfe von Tools seinen Rechner gerade in dem Moment bereinigt und somit auch das Tempverzeichnis leert, in dem im Logfile fleißig die Daten gesammelt werden. Und wenn dann beispielsweise abends die Mail versendet wird, ist die leer oder unvollständig, weil das Logfile nicht mehr vorhanden ist oder erst wieder später erstellt wurde. Da wäre es doch besser, ein Verzeichnis im Root anzulegen oder aber auch gleich das Blat-Verzeichnis dafür zu verwenden, in dem dann das Logfile liegt.

Dann müsste man in beiden Dateien (newupload.cmd + mailer.cmd) zum Beispiel nur "%windir%\temp" in "c:\blat" oder "c:\verzeichnismeinerwahl" ändern. Oder habe ich da was übersehen oder geht das soo nicht?

Ich werde mir das dann mal in nächster Zeit reinziehen.

Gruß Jan
 
Thema Temp Verzeichnis:

Bei Windows7 ist Supernature der Experte.

Windows kennt ja 2 -> temp und tmp. XP und Vista zeigen hier ein eigenartiges Verhalten, was sich mit wechselnden Verzeichnissen bemerkbar macht.
Deshalb hab ich gleich nach %windir%\temp.

Beim Bau unseres Antizock Tools fand JimDuggan eine kleine Sicherheitslücke/Hintertür in Windows7. Deshalb hab ich das Script im Temp Verzeichnis machen lassen.

Optimal wäre es natürlich gleich alles im Blat Verzeichnis Arbeiten zu lassen.
In den Zeilen 7 und 8 der beiden Scripte einfach das %windir%\temp\logfile.txt durch c:\blat\tmp\logfile.txt ersetzen.
Vorher mit mkdir c:\blat\tmp Arbeitsfähigkeit herstellen.
 
Beim Bau unseres Antizock Tools fand JimDuggan eine kleine Sicherheitslücke/Hintertür in Windows7. Deshalb hab ich das Script im Temp Verzeichnis machen lassen.
Jetzt habe ich mir die 8 Seiten durchgelesen, aber bezüglich Lücke-Tür-Windows7 nichts gefunden oder übersehen. Installiert habe ich´s mir aber auch gleich. :) Nützlich! Was bedeutes es nun? Lieber nicht blank im Blat-Verzeichnis oder was?

Optimal wäre es natürlich gleich alles im Blat Verzeichnis Arbeiten zu lassen.
In den Zeilen 7 und 8 der beiden Scripte einfach das %windir%\temp\logfile.txt durch c:\blat\tmp\logfile.txt ersetzen.
Ist da der temp-Ordner notwendig oder kann man das Logfile auch direkt im Blat-Verzeichnis machen lassen? Oder ist das mit der Lücke gemeint?

Vorher mit mkdir c:\blat\tmp Arbeitsfähigkeit herstellen.
Jetzt mal ganz doof nachgefragt. Mit "mkdir" ist wohl Verzeichnis erstellen gemeint, wenn ich das noch recht von früher in Erinnerung habe. Was ist mit "Arbeitsfähigkeit" gemeint? Das Selbe?
 
Guten Abend,

nun ich muss sagen die Idee und die Umsetzung gefallen mir unheimlich.

Natürlich habe ich es gleich umgesetzt unter Windows Server 2003 und es funktioniert einwandfrei.

Vielen Dank.

Mfg
SysNuBe
 
Guten Morgen!

Zwei Fragen zur Umsetzung habe ich doch noch. :)

- Und zwar wenn keine Uploads erfolgen wird dann trotzdem eine Email generiert ?

- Wann wird die Email denn verschickt ? 00:01 Uhr ?

Bis dato habe ich nämlich keine Email bekommen!


Über ein Antwort von euch würde ich mich sehr freuen.
 
Ich habe bisher mitbekommen, dass die Mail gegen 0 Uhr versendet wird, wenn der Rechner an ist, also der Server läuft. Und das auch, wenn kein Upload stattgefunden hat. Die Mail ist dann leer. Ein paar Tage hatte ich den Rechner in der Nacht an und erhielt um 0 Uhr immer eine leere Mail. Jetzt ist der Rechner schon ne Weile in der Nacht aus und es kommt keine Mail.

Gruß Jan
 
Oben