Dateien auf dem FTP Server prüfen
Hallo,
ich bin neu hier, habe aber dennoch keine Lösung für mein Problem im Forum oder im Internet gefunden, weiß gar nicht ob es möglich ist.
Ich suche nach einer Möglichkeit, Dateien automatisch direkt auf einem FTP-Server zu überprüfen ohne diese erst runterladen zu müssen.
Geprüft werden soll ob z.B. eine bestimmte Datei zu einen bestimmten Zeitpunkt vorhanden ist und welche Dateigröße diese hat.
Wenn die Datei nicht vorhanden ist, soll z.B. eine email an mich verschickt werden.
Bisher habe ich nur Programme gefunden, die entweder die Dateien downloaden und diese dann prüfen können oder aber nur Dateien synchronisieren.
Ich habe auch nicht dagegen dies über eine Batchdatei zu lösen, nur leider bin ich da nicht so erfahren.
Vielleicht weiß ja jemand so ein Programm oder kann mir Tipps geben, wie ich so etwas machen kann.
Anbei ein paar Daten:
System auf dem das Programm laufen soll: Windows Server 2008.
FTP-Server auf dem die Daten zu prüfen sind ist: Xlight FTP oder Microsoft IIS Server.
Zugriff auf den FTP nur via IP möglich (steht nicht im gleichen Netzwerk).
Software soll als permanenter Task laufen und Daten prüfen
geprüft werden soll z.B.:
Datei auf vorhanden sein --> wenn nein Email senden
Dateigröße --> wenn zu klein, Email senden
Wäre super, wenn jemand eine Lösung kennt.
Wenn ihr noch Infos von mir benötigt, sagt es einfach.
gruss
Batimbus
ich bin neu hier, habe aber dennoch keine Lösung für mein Problem im Forum oder im Internet gefunden, weiß gar nicht ob es möglich ist.
Ich suche nach einer Möglichkeit, Dateien automatisch direkt auf einem FTP-Server zu überprüfen ohne diese erst runterladen zu müssen.
Geprüft werden soll ob z.B. eine bestimmte Datei zu einen bestimmten Zeitpunkt vorhanden ist und welche Dateigröße diese hat.
Wenn die Datei nicht vorhanden ist, soll z.B. eine email an mich verschickt werden.
Bisher habe ich nur Programme gefunden, die entweder die Dateien downloaden und diese dann prüfen können oder aber nur Dateien synchronisieren.
Ich habe auch nicht dagegen dies über eine Batchdatei zu lösen, nur leider bin ich da nicht so erfahren.
Vielleicht weiß ja jemand so ein Programm oder kann mir Tipps geben, wie ich so etwas machen kann.
Anbei ein paar Daten:
System auf dem das Programm laufen soll: Windows Server 2008.
FTP-Server auf dem die Daten zu prüfen sind ist: Xlight FTP oder Microsoft IIS Server.
Zugriff auf den FTP nur via IP möglich (steht nicht im gleichen Netzwerk).
Software soll als permanenter Task laufen und Daten prüfen
geprüft werden soll z.B.:
Datei auf vorhanden sein --> wenn nein Email senden
Dateigröße --> wenn zu klein, Email senden
Wäre super, wenn jemand eine Lösung kennt.
Wenn ihr noch Infos von mir benötigt, sagt es einfach.
gruss
Batimbus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 174491
Url: https://administrator.de/contentid/174491
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
10 Kommentare
Neuester Kommentar
Gude,
ganz kurz nur zum Dateien überprüfen:
Versuch es doch mal mit NetDrive, ein Programm, welches einen FTP Server direkt als Netzlaufwerk im System einbindet, wo man also auch ganz normal mit den Dateien arbeiten kann, als wäre es ein lokaler Ordner. Das Programm kann man so einrichten, dass es bei Windowsstart mit gestartet wird und man kann auch eine FTP Verbindung beim Programmstart automatisch gleich einbinden lassen.
Ich benutze NetDrive immer, wenn ich auf nem FTP Server arbeiten muss, da ich dort wie schon erwähnt ganz normal sämtliche Dateioperationen ausführen kann wie Rechtsklick -> Neu oder kopieren, verschieben, umbenennen, editieren etc pp.
Ist das realisiert, kannst Du z.B. per Batch nach dem Motto "if exist X:\Datei.xxx do ..." Deine Prüfroutinen ausführen lassen.
Falls Du mit der Batch noch Schwierigkeiten haben solltest, meld Dich einfach mal. Ich kann Dir da bestimmt weiter helfen bzw. bastla, der Batch Guru schlechthin springt ja auch hier irgendwo herum
Gruß
Dark
ganz kurz nur zum Dateien überprüfen:
Versuch es doch mal mit NetDrive, ein Programm, welches einen FTP Server direkt als Netzlaufwerk im System einbindet, wo man also auch ganz normal mit den Dateien arbeiten kann, als wäre es ein lokaler Ordner. Das Programm kann man so einrichten, dass es bei Windowsstart mit gestartet wird und man kann auch eine FTP Verbindung beim Programmstart automatisch gleich einbinden lassen.
Ich benutze NetDrive immer, wenn ich auf nem FTP Server arbeiten muss, da ich dort wie schon erwähnt ganz normal sämtliche Dateioperationen ausführen kann wie Rechtsklick -> Neu oder kopieren, verschieben, umbenennen, editieren etc pp.
Ist das realisiert, kannst Du z.B. per Batch nach dem Motto "if exist X:\Datei.xxx do ..." Deine Prüfroutinen ausführen lassen.
Falls Du mit der Batch noch Schwierigkeiten haben solltest, meld Dich einfach mal. Ich kann Dir da bestimmt weiter helfen bzw. bastla, der Batch Guru schlechthin springt ja auch hier irgendwo herum
Gruß
Dark
Hallo
ich MUSS jetzt auch noch meinen Beitrag dazu los werden...
Mein Plan war es, __ganz einfach__ mit der Batchdatei und der
Jaja... "gaaanz einfach" : die
Dummerweise konnte ich nicht davon ablassen selber tätig zu werden,
darum habe ich mich der
Tja, das müsstest du dann noch etwas an die Ausgabe des FTP-Servers (Verzeichnisliste) anpassen.
ACHTUNG: Das Passwort und der Benutzername zum FTP-Account stehen in der Datei (Leserechte nur für Admins einstellen) !
Auch dieses, wie TheDarkLord schon vorschlug, mit den Tasks im gewünschtem Rhythmus ausführen lassen.
~Arano
...und dabei wollte ich eigentlich etwas anders machen...
ich MUSS jetzt auch noch meinen Beitrag dazu los werden...
Mein Plan war es, __ganz einfach__ mit der Batchdatei und der
ftp.exe
die Verzeichnisliste vom FTP-Server zu holen und in dieser dann die zu "Überwachende" Datei und die Größenangabe heraus zu filtern.Jaja... "gaaanz einfach" : die
ftp.exe
hat da so ein paar "Einschränkungen".Dummerweise konnte ich nicht davon ablassen selber tätig zu werden,
darum habe ich mich der
psftp.exe
(Putty-FTP-Client) bedient: Putty Download Page (und psftp) - denn irgendwie muss das doch gehen @echo off
REM Infos zur überwachten Datei
set "FILE=readme.txt"
set "SIZE=626"
REM Benutzerdaten zum FTP-Server
set "FTP_SERVER=192.0.0.180"
set "FTP_USER=benutzername"
set "FTP_PASS=******"
REM Logdatei zum speichern der "FTP-Verzeichnisliste"
REM Mein FTP-Server listet so auf:
REM -rw-r--r-- 1 arano arano 626 Mar 12 2006 readme.txt
REM Token-5 = Bytes
REM Token-9 = Dateiname
set "LOG=batch-ftp.log"
REM Datei in die die FTP-Komandos "zwischengespeichert" werden
set "CMDS=ftp-commands.cmd"
REM Lösche eventuelle "überbleibsel"
if exist %LOG% del %LOG%
if exist %CMDS% del %CMDS%
REM Erstelle Temporäre FTP-Kommando-Datei
>>%CMDS% echo ls
REM FTP-Aktionen in Logdatei umleiten
>>%LOG% psftp.exe -b %CMDS% -l %FTP_USER% -pw %FTP_PASS% %FTP_SERVER%
REM Lösche FTP-Kommando-Datei
del %CMDS%
REM Suche in der Logdatei nach der Datei und überprüfe sie
for /F "tokens=5,9" %%i IN ('findstr "%FILE%" %LOG%') DO (
echo Datei %%j gefunden, teste Groesse %%i ^>= %SIZE%
if %%i GEQ %SIZE% (
echo Groesse OK
) else (
echo zu klein !!
goto send_mail
)
set "found=true"
)
REM wenn %found% nicht "true" ist, wurde Datei nicht gefunden
if not "%found%"=="true" (
echo Datei %FILE% existiert nicht
goto send_mail
)
REM wenn das Programm bi hier her durch läuft,
REM war wohl alles in Ordnung.
REM "überspringe" E-Mail versand !
goto ende
REM wird hierher gesprungen, gab es eine Differenz,
REM benachrichtige den Admin
:send_mail
echo Sende E-Mails an Admin (verwende blat.exe)
:ende
REM Programmende, lösche Verzeichnisliste
del %LOG%
pause
Tja, das müsstest du dann noch etwas an die Ausgabe des FTP-Servers (Verzeichnisliste) anpassen.
ACHTUNG: Das Passwort und der Benutzername zum FTP-Account stehen in der Datei (Leserechte nur für Admins einstellen) !
Auch dieses, wie TheDarkLord schon vorschlug, mit den Tasks im gewünschtem Rhythmus ausführen lassen.
~Arano
...und dabei wollte ich eigentlich etwas anders machen...
Zitat von @Arano:
Auch dieses, wie TheDarkLord schon vorschlug, mit den Tasks im gewünschtem Rhythmus ausführen lassen.
Auch dieses, wie TheDarkLord schon vorschlug, mit den Tasks im gewünschtem Rhythmus ausführen lassen.
Danke für die Richtigstellung
PS: Dein letzter Satz "Dabei wollte ich eigentlich etwas anderes machen" wird übrigens in Deinem Beitrag nicht angezeigt...
Hey,
~Arano
Danke für die Richtigstellung face-smile
Naja, also... ich war mir wegen der Rechtschreibung ziemlich sicher, hab es dann aber doch nachgeschlagen face-smilePS: Dein letzter Satz "Dabei wol... ... hen" wird übrigens in Deinem Beitrag nicht angezeigt...
Öhm... und warum kann ich den Lesen (sowohl ein-, als auch ausgeloggt) und du ebenfalls ?~Arano
Hallo batimbus,
hier gibt's dann noch meinen Senf dazu:
Das Script verwendet den FTP-Befehl von Windows. Verzeichnisnamen im Listing des FTP-Servers werden nicht berücksichtigt und man kann nicht nur eine Datei und ihre Größe angeben sondern mehrere (die auch Leerzeichen im Namen enthalten können). In den Zeilen 4 und 5 werden diese Listen zusammengebaut. Die Reihenfolge von Namen und Dateigrößen in den beiden Listen muss miteinander korrespondieren. Die Dateinamen MÜSSEN AUCH WENN SIE KEINE LEERZEICHEN ENTHALTEN jeder für sich in Anführungszeichen eingeschlossen werden.
Wie TheDarkLord schon schrieb, lässt man das Script am besten als geplanten Task ausführen. Batchscripte, die die ganze Zeit im Hintergrund laufen, verursachen eine zu hohe Prozessorlast
Gruß
Friemler
hier gibt's dann noch meinen Senf dazu:
@echo off & setlocal
set "FileList="test1.txt" "test2.txt" "test3.txt""
set "FileSizes=28537 1459 3469"
set "FTPServer=DerFTPServer"
set "FTPUser=FTPUsername"
set "FTPPass=FTPPasswort"
set "FTPScript=%Temp%\FTPScript.txt"
> "%FTPScript%" echo open %FTPServer%
>>"%FTPScript%" echo user %FTPUser% %FTPPass%
>>"%FTPScript%" echo ascii
>>"%FTPScript%" echo ls -l
>>"%FTPScript%" echo bye
for /f "tokens=5,8*" %%a in ('ftp -n -v -s:"%FTPScript%" ^| findstr /v "^ftp> ^bye ^d"') do (
call :ProcessFileName "%%c" %%a
)
for %%f in (%FileList%) do (
if %%f neq "" call :FileNotFound %%f
)
del "%FTPScript%"
exit /b
:ProcessFileName
set "FileName=%1"
set /a Idx=1
for %%f in (%FileList%) do (
if %%f equ %FileName% (
call :CheckFileSize %FileName% %2
call set "FileList=%%FileList:%%~f=%%"
)
set /a Idx+=1
)
exit /b
:CheckFileSize
for /f "tokens=%Idx%" %%s in ("%FileSizes%") do (
if %%s neq %2 call :FileSizeWrong %1 %2
)
exit /b
:FileSizeWrong
echo Dateigröße falsch: %1 %2 Bytes
rem Hier ein BLAT-Aufruf
exit /b
:FileNotFound
echo Datei nicht gefunden: %1
rem Hier ein BLAT-Aufruf
exit /b
Das Script verwendet den FTP-Befehl von Windows. Verzeichnisnamen im Listing des FTP-Servers werden nicht berücksichtigt und man kann nicht nur eine Datei und ihre Größe angeben sondern mehrere (die auch Leerzeichen im Namen enthalten können). In den Zeilen 4 und 5 werden diese Listen zusammengebaut. Die Reihenfolge von Namen und Dateigrößen in den beiden Listen muss miteinander korrespondieren. Die Dateinamen MÜSSEN AUCH WENN SIE KEINE LEERZEICHEN ENTHALTEN jeder für sich in Anführungszeichen eingeschlossen werden.
Wie TheDarkLord schon schrieb, lässt man das Script am besten als geplanten Task ausführen. Batchscripte, die die ganze Zeit im Hintergrund laufen, verursachen eine zu hohe Prozessorlast
Gruß
Friemler
Zitat von @Arano:
Hey,
> Danke für die Richtigstellung face-smile
Naja, also... ich war mir wegen der Rechtschreibung ziemlich sicher, hab es dann aber doch nachgeschlagen face-smile
> PS: Dein letzter Satz "Dabei wol... ... hen" wird übrigens in Deinem Beitrag nicht angezeigt...
Öhm... und warum kann ich den Lesen (sowohl ein-, als auch ausgeloggt) und du ebenfalls ?
~Arano
Hey,
> Danke für die Richtigstellung face-smile
Naja, also... ich war mir wegen der Rechtschreibung ziemlich sicher, hab es dann aber doch nachgeschlagen face-smile
> PS: Dein letzter Satz "Dabei wol... ... hen" wird übrigens in Deinem Beitrag nicht angezeigt...
Öhm... und warum kann ich den Lesen (sowohl ein-, als auch ausgeloggt) und du ebenfalls ?
~Arano
Hmm das frage ich mich gerade auch, eben war das nicht da... kurios
Huhu,
Friemlers Senf schmeckt besser und sauberer ist er auch !
Bei mir funktioniert es / was nicht... könnte an der VM liegen... jedenfalls ist das der Grund warum ich dann psftp.exe verwendet habe.
Nach der Ausgabe von "Illegal PORT command" dauert es eine Weile und erst dann springt er einen weiter und lässt sich weiter befehlen.
FTP-Server Log dazu:
Meinte das läge an einer fehlenden PASV-Mode unterstützung.
Wobei... wenn es mit psftp funktioniert, dann kann es wiederum ja nicht an der VM gelegen haben...
~Arano
Edit:
Falls jemand wegen den IP unterschieden fragen möchte: 10.0.2.15 ist das WinXP in der virtuellen Maschine (VirtualBox)
Probiere ich das gleich mit 10.0.2.2 als FTP-Server, geschieht leider das gleiche, daran liegt es also auch nicht.
Friemlers Senf schmeckt besser und sauberer ist er auch !
Bei mir funktioniert es / was nicht... könnte an der VM liegen... jedenfalls ist das der Grund warum ich dann psftp.exe verwendet habe.
C:\DuE\Arano>ftp -n -v
ftp> open 192.168.178.180
ftp> user arano
Kennwort: ******
ftp> pwd
257 "/home/arano" is the current directory
ftp> ls -l
Illegal PORT command
ftp> pwd
257 "/home/arano" is the current directory
ftp>
FTP-Server Log dazu:
Okt 11 21:28:30 proftpd[4625] : FTP session opened.
Okt 11 21:28:37 proftpd[4625] : USER arano: Login successful.
Okt 11 21:28:45 proftpd[4625] : Refused PORT 10,0,2,15,19,140 (address mismatch)
Okt 11 21:28:37 proftpd[4625] : USER arano: Login successful.
Okt 11 21:28:45 proftpd[4625] : Refused PORT 10,0,2,15,19,140 (address mismatch)
Meinte das läge an einer fehlenden PASV-Mode unterstützung.
Wobei... wenn es mit psftp funktioniert, dann kann es wiederum ja nicht an der VM gelegen haben...
~Arano
Edit:
Falls jemand wegen den IP unterschieden fragen möchte: 10.0.2.15 ist das WinXP in der virtuellen Maschine (VirtualBox)
Probiere ich das gleich mit 10.0.2.2 als FTP-Server, geschieht leider das gleiche, daran liegt es also auch nicht.