Forum: PC Hard- und Software Automatisiert, Datei alle x Minuten auf FTP-Server hochladen?


von Thomas (kosmos)


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?

von Rufus Τ. F. (rufus) Benutzerseite


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/

von Tom K. (ez81)


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

von Thomas (kosmos)


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

von Peter II (Gast)


Angehängte Dateien:

Lesenswert?

Thomas O. schrieb:
> Geplante Tasks(Aufgabenplanung) kann ich nur 5 Minuten als kleinstes
> Intervall einstellen.

sicher? Ich kann 1 minute einstellen

von Thomas (kosmos)


Lesenswert?

@Tom: habe deinen Beitrag erst jetzt gelesen da ich vorhin etwas länger 
zum verfassen gebraucht habe. Deine Lösung funktioniert bei mir zwar in 
der Browser-Adresszeile aber nicht in der Eingabeaufforderung.

wput schau ich mir mal an

von bingo (Gast)


Lesenswert?

Nimm Filezilla, der kann auch eine Bedienung über die Kommandozeile.

von Michael U. (amiga)


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

von (prx) A. K. (prx)


Lesenswert?

Für automatische Verarbeitung ist ncftp erheblich praktischer als das 
normale ftp Programm. => http://www.ncftp.com/ncftp/

von Thomas (kosmos)


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

von (prx) A. K. (prx)


Lesenswert?

ncftpput -A = Append to remote files, instead of overwriting them.

Alle 30 Sekunden: CMD-Script im Autostart. Per Task Scheduler geht das 
nicht. Das geht auch minmiert.

von Thomas (kosmos)


Angehängte Dateien:

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.

von (prx) A. K. (prx)


Lesenswert?

Thomas O. schrieb:

> mit ncftpput -a komme ich nicht so klar irgendwie passt immer meine
> Reihenfolge nicht

Erst sämtliche Optionen, dann die Dirs/Files:

ncftpput -u kosmos -p geheim -A c:\ . test.bat

von (prx) A. K. (prx)


Lesenswert?

Thomas O. schrieb:

> Ich erstelle ein Script und lege es in den Autostart-Ordner

Verknüpfung dorthin legen reicht auch.

> aber welchen Befehl brauche ich im
> Script, dann kann ich damit googeln gehen.

:loop
...hier könnte dein Code stehen...
rem Mit Windows Bordmitteln 30 Sekunden warten
ping -n 30 localhost >nul
goto loop

von (prx) A. K. (prx)


Lesenswert?

Ein Konsolfenster als bearbeiteten Screendump zu posten ist schon etwas 
schräg. Mit Copy&Paste gehts einfacher.

von (prx) A. K. (prx)


Lesenswert?

CMD File minimiert starten:
  start "Unsinn" /min unsinn.cmd

von citb (Gast)


Lesenswert?

Thomas O. schrieb:
> -A (Attemp) heist doch ergänzen/ hinzufügen oder?

Fast. Es muss heissen:
> -A (Attach) heist doch ergänzen/ hinzufügen oder?

citb

von Thomas (kosmos)


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.

von Thomas (kosmos)


Lesenswert?

habe das Problem eingegrenzt
>null damit wird doch die Ausgabe nach Null umgeleitet, und da gibts Probleme mit 
einer Berechtigung. Gibts auch eine Alternative?

von (prx) A. K. (prx)


Lesenswert?

citb schrieb:

>> -A (Attemp) heist doch ergänzen/ hinzufügen oder?
>> -A (Attach) heist doch ergänzen/ hinzufügen oder?

Wie wäre mit dem, was in der Doku steht: append=anhängen.

von (prx) A. K. (prx)


Lesenswert?

Thomas O. schrieb:

>>null damit wird doch die Ausgabe nach Null umgeleitet, und da gibts Probleme mit
> einer Berechtigung. Gibts auch eine Alternative?

Ja. Richtig schreiben. So wie ich oben.

Kannst das >nul aber auch weglassen. Labert dann eben.

von Thomas (kosmos)


Lesenswert?

danke jetzt funktioniert zumindestens mal der Upload und die 
Verzögerung, werde mal morgen den Rest ausprobieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.