Page 1 of 1

Zeitgesteuerte Übertragung von mehreren Servern??

PostPosted: 15. October 2004 14:19
by wdpf
Hallo,

ich habe folgende Anforderung:

Über Nacht muss ich von 8 verschiedenen Rechnern (Niederlassungen) jeweils eine Datei auf unseren zentralen Server überspielen.
Die Datei soll je nach NL in das entsprechende Verzeichnis auf unserem Server gespielt werden.

Auf den Rechnern in den NL ist Filezilla Server installiert.

Kann ich das mit Filezilla realisieren und falls ja, wie??
Oder hat mir jemand eine gute Alternative??

Bisher läuft das über acht Windows Tasks und eine jeder NL zugeordneten Batch-Datei. Angeblich kommen die Daten aber nicht immer an und ich habe kein Übertragungsprotokoll um dies zu überprüfen.

Schöne Grüsse
WD

PostPosted: 15. October 2004 14:39
by Wiedmann
Bisher läuft das über acht Windows Tasks und eine jeder NL zugeordneten Batch-Datei.

Was machst du bisher in dieser Batchdatei?

Über Nacht muss ich von 8 verschiedenen Rechnern (Niederlassungen) jeweils eine Datei auf unseren zentralen Server überspielen.

Welcher Zugriff besteht auf diese 8 Rechner?

PostPosted: 15. October 2004 14:52
by wdpf
Nacholgend die Dateien:

Batch-Datei:

ftp -s:aaa.shp

Ruft im Prinzip nur die *shp - Datei auf.

shp-Datei:

open xxx.xxx.xxx.xxx
username
passwort

get "name der zu holenden Datei"



close
quit
bye


Auf unserem Server habe ich für jede NL ein Verzeichnis und in jedem Verzeichnis liegt die Batch-und shp-Datei.
Im Windows-Task wird über Nacht (im Abstand von 30 Minuten) die jeweilige Batch-Datei im jeweiligen Verzeichnis gestartet.

Grösse der zu übertragenden Datei ca. 2 - 4 MB.

Für das Verzeichnis auf den Rechnern sind alle Rechte gesetzt.
Der Transfer funktioniert ja auch soweit (nur nicht immer). Allerdings kommt es wohl ab und an zu Verbindungsunterbrechungen oder die Task wird gestartet aber nicht erfolgreich beendet.

Das Problem ist daher das ich

- keine Meldung erhalte ob den wirklich Daten geflossen sind (Windwos Task sagt nur "ausgeführt"
- und bei einem nicht ordnungsgemäss durchgeführten Transfer dieser nicht automatisch wieder aufgenommen wird z.B. nach xx-Minuten

Schöne Grüsse
WD

PostPosted: 15. October 2004 17:44
by Wiedmann
Sind deine Rechner eigentlich direkt ans Internet angeschlossen? Der FTP-Client von Windows beherrscht ja nur den aktiven Modus der bei Routern oft Probleme macht.

Gut so auf die schnelle mal folgende Möglichkeit:

ftptrans.bat
Code: Select all
@echo off
:loop
echo ====================== Start: %date% %time% ====================== >>ftp.log 2>nul
ftp -i -s:ftp.shp >ftptest.log 2>nul
copy /y ftp.log + ftptest.log ftp.log >nul 2<&1
echo ====================== Ende:  %date% %time% ====================== >>ftp.log 2>nul
find "Transfer complete." ftptest.log >nul 2<&1
if %errorlevel% == 1 (
   rem pausebefehl
   goto loop
)
del ftptest.log >nul 2<&1


ftp.shp
Code: Select all
open IP
BENUTZERNAME
PASSWORT
binary
get "/PFAD/DATEI"
bye

(Hab hier mal noch ein "binary" eingefügt.)

Sinn und Zweck der Batchdatei ist, eine Logdatei mitzuschreiben. Die Batchdatei wird auch so oft wiederholt bis der Download komplett abgeschlossen werden konnte. Bei jedem Download, ob erfolgreich oder nicht, gibt es Einträge über den Vorgang in der Log.

Ein Pausebefehl (wait) ist bei einem aktuellen Windows nicht mehr dabei. Wenn du dir den entsprechend wo anders her besorgst, macht es sinn diesen noch einzubauen. Oder du schreibst das für den WSH (VBScript) um.

PostPosted: 18. October 2004 05:43
by wdpf
Guten Morgen,

die Rechner sind via VPN unseres Dienstleisters mit diesem verbunden. Wir hängen momentan noch an einer Standleitung.

Werde es mal ausprobieren.

Bis dahin
Vielen Dank!!

Gruss
WD

PostPosted: 18. October 2004 06:20
by wdpf
Hallo,

funktioniert gut bis auf...

irgendwie startet die Übertragung immer wieder, obwohl die Daten vollständig da sind.
Habe den "Errorlevel" daher mal rausgenommen.

PostPosted: 18. October 2004 14:36
by Wiedmann
irgendwie startet die Übertragung immer wieder, obwohl die Daten vollständig da sind.
Habe den "Errorlevel" daher mal rausgenommen.

Damit wird dann halt die Übertragung bei Fehler nicht neu gestartet...

Hmm, bei mir sieht ein Logeintrag z.B. so aus:
====================== Start: 15.10.2004 18:39:47,49 ======================
ftp> Verbindung mit ntserver-2.wiedmann-online.local wurde hergestellt.

open ftp
220 ftpd ready
Benutzer (ntserver-1.wiedmann-online.local:(none)):
331 User name okay, need password.

230 User logged in.
ftp> binary
200 Type set to I.
ftp> get "/www/sanur.exe"
200 PORT command successful.
150 Opening BINARY mode data connection for sanur.exe (8704 bytes).
226 Transfer complete. 8704 bytes in 0.01 sec. (850.000 Kb/s)
FTP: 64d Bytes empfangen in 0,01Sekunden 870,40KB/s

ftp> bye
221 Goodbye. Control connection closed.
====================== Ende: 15.10.2004 18:39:48,33 ======================

In der Batchdatei überprüf ich ob der String "Transfer complete." enthalten ist. Wenn Ja (errorlevel == 0) endet die Batch, wenn nein (errorlevel == 1) wird sie wiederholt.

Jetzt gibt es zwei Möglichkeiten:
a) dieser String sieht bei dir anders aus
b) der find Befehl findet die "ftptest.log" nicht.

Funktioniert es nur als Task nicht oder auch direkt ausgeführt?

(notfalls mal die ">nul 2<&1" beim Direktausführen wegmachen)

Mit welchem OS führst du die Batch aus?

die Rechner sind via VPN

Hast du dann nicht direkten Zugriff auf die Rechner --> Shares?

PostPosted: 18. October 2004 14:54
by wdpf
Ha, da hab ichs doch

Heißt nicht "transfer complete" sondern "transfer ok"

....hätte ich aber auch wirklich ........sollte die Log-Datei vielleicht auch mal richtig lesen......hmmm

Danke