Automatisiert, Datei alle x Minuten auf FTP-Server hochladen?

OP #2527319
Lesenswert?

Hallo, ich bräuchte etwas Hilfe bei folgendem Problem. Ich kenne mich 
mir Batchscripten nicht so gut aus.

Ausgangssituation auf einem XP Rechner wird eine Logdatei erstellt diese 
wird immer weiter ergänzt und ab einer bestimmten Größe geleert.

Ich will die Inhalte aber nicht verlieren deswegen würde ich die 
Änderungen gerne in einer neuen Datei ergänzen und diese alle x Minuten 
per FTP auf einen Server hochladen auf welchen ich von unterwegs Zugriff 
habe. Oder aber ich würde die Datei in kurzen Intervallen und einem 
fortlaufendem Dateinamen kopieren. Also Sicherung001.log, 
Sicherung002.log

1. Gibt es die Möglichkeit eine .bat Datei auszuführen ohne das sich ein 
störendes Fenster der Eingabeaufforderung öffnet?
Unter Vista habe ich für cmd.exe die Option /Q (Befehlsanzeige aus) 
gefunden entspricht das nur einem @Echo off oder wird dadurch keine 
Fenster der Eingabeaufforderung geöffnet? Bin gerade nicht am XP 
Rechner.

2. Den Dateivergleich kann ich ja mit dem Befehl FC durchführen aber wie 
ich dann eine Aktion ableiten wenn es einen Unterschied in den beiden 
Dateien gibt? If/Then war das QBasic oder funktioniert das in einer 
Batch Datei auch?

3. Nun habe ich noch das Problem automatisch das ganze auf den 
FTP-Server hochzuladen. Per Hand klappt das in der Eingabeaufforderung 
aber automatisiert klappt es nicht.
Vorgehensweise:
ftp mein.server.net
User> xyz
Password> zyx
ftp> send Logdatei.log
zum automatisieren habe ich mir an das hier 
http://www.axel-hahn.de/axel/page_compi/bat_ftp.htm gehalten
ftp ruft ein script aus einer anderen Datei auf, allerdings funktioniert 
die Übergabe des Benutzernamens und Passwortes nicht, habe es mit und 
ohne Klammern probiert gibt es evtl. einen Tastencode für ein Return das 
man anhängen muss?

4. Wie könnte man das mit der fortlaufenden Dateinummer realisieren?
Persönliche Seite #2527385
Lesenswert?

1. Sieh Dir mal "Geplante Tasks" an.

2. Du musst keine Batchdatei verwenden, sondern kannst auch eine 
VBScript-Datei (*.vbs) nutzen. Die ist als Kommandozeilenargument an 
cscript.exe zu übergeben (das ist der Windows Scripting Host, der auch 
JavaScript versteht).

3. Sieh Dir mal curl an, das ist ein Kommandozeilentool, das Datei-up- 
und Downloads sowohl via ftp als auch per http erledigen kann.

http://curl.haxx.se/
#2527413
Lesenswert?

Eine Alternative wäre wput, das auch Dateizeitstempel vergleichen kann 
und dann nur neuere Files hochlädt, k.A. ob das in dem Fall nützlich 
wäre. User/PW muss in der URL angegeben werden, das steht so nicht 
deutlich in der Doku: ftp://user:password@ftp.server.net
OP #2527449
Lesenswert?

danke für deine Vorschläge.

Habe es inzwischen hin bekommen mit dem Batch-script hatte einen 
Buchstabendreher im Benutzernamen. Müsste das jetzt nur noch ohne 
öffnendes Fenster bewerkstelligen und per Intervall vielleicht kann man 
irgendwie den Time Befehl auswerten so könnte ich es zumindestens jede 
Minute machen.

Geplante Tasks(Aufgabenplanung) kann ich nur 5 Minuten als kleinstes 
Intervall einstellen.

Wollte das ungern mit zusätzlicher Software sondern mit Bordmitteln 
lösen, ich werde mir mal VB-Script ansehen
#2527518
Lesenswert?

Hallo,

das Script für den winXP-FTP muß nur genau die Sachen enthalten, die als 
EIngabe erwartet werden:

z.B. als Datei ftp.txt:
1
open ftp.blabla.de
2
benutzername
3
password
4

5
cd /import
6
binary
7

8
put daten.csv
9

10
bye

Aufruf dann mit

ftp -s:ftp.txt

Das kann dann seinerseits natürlich auch aus einer .bat erfolgen.

Gruß aus Berlin
Michael
OP #2527548
Lesenswert?

@Michale: Ja das ganze funktioniert ja schon.

Was ich jetzt noch benötige wäre

1. Dass das Ganze im Hintergrund notfalls auch minimiert abläuft also 
sich keine Fenster vor ein anderes öffnet.
2. In kleinen Intervallen automatisch abläuft, z.B. alle 30 Sekunden 
oder jede Minute
3. und vor allem nicht meine Datei auf dem FTP-Server überschreibt 
sondern nur erweitert oder eine fortlaufend nummerierte Datei hochlädt, 
also Log0001.log Log0002.log
OP #2527742
Lesenswert?

mit ncftpput -a komme ich nicht so klar irgendwie passt immer meine 
Reihenfolge nicht ich möchte eine Datei die direkt auf c:\ liegt aufs 
Hauptverzeichniss des Servers legen. ncftpput rufe ich auch direkt von 
c:\ auf oder muss ich das explizit angeben?
-A (Attemp) heist doch ergänzen/ hinzufügen oder?

Kannst du mir das mit dem CMD-Script erklären? Ich erstelle ein Script 
und lege es in den Autostart-Ordner aber welchen Befehl brauche ich im 
Script, dann kann ich damit googeln gehen.
Angehängte Dateien:
OP #2527850
Lesenswert?

ok das nächste mal probiere ich es direkt zu markieren.

Jetzt kommt schon wieder das nächste Problem auf. "Dem Client fehlt ein 
erforderliches Recht" kommt als Antwort auf den Ping Befehl. Wenn ich 
das Script testweise als Admin starte funktioniert das pingen alle 30 
Sekunden als verzögerung aber ncftpput hat Probleme die Datei Test.bat 
zu öffnen, könnte es sein das ich nur das erste mal den Login 
durchführen soll und in der Loop schleife nur die Dateien hochlade ohne 
erneutes Einloggen, denke das es einen Timeout von mind 120 Sekunden 
gibt wenn ich diesen alle 30 sekunden unterbreche dürfte doch kein neues 
Einloggen erforderlich sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren