l-unix
Goto Top

FTP Upload und Datei ausfuehren

Hallo Leute,

ich habe ein kleines Problem. Per FTP soll eine Verbindung zu einem Server aufgebaut werden. Von dem Server muessen dann bestimmte Dateien geholt werden. Soweit nicht schwer, allerdings muss ich auf dem Server einige Abfragen starten, z.B. ob der Ordner existiert oder ob eine Datei in diesem Ordner liegt. Ich verstehe nicht wie ich das realisieren soll, sofern es moeglich ist.

Ich habe ein Batch-Script gebastelt (es handelt sich um einen Windows Server 2003), um den Aufbau einer FTP-Verbindung zu dem Server zu realisieren.
Nur wie schaffe ich es ein Shell-Script auszufuehren. waehrend dieser FTP-Verbindung?

Unter Linux wuerde ich einen SSH-Connect machen oder die Befehle per SSH absetzen, bei Windows bin ich allerdings ratlos....


Ich hoffe ihr koennt mir bei dem Problem helfen.

Content-ID: 122256

Url: https://administrator.de/contentid/122256

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

60730
60730 07.08.2009 um 12:12:54 Uhr
Goto Top
Servus,
Zitat von @L-UniX:
Ich habe ein Batch-Script gebastelt (es handelt sich um einen Windows
Server 2003), um den Aufbau einer FTP-Verbindung zu dem Server zu
realisieren.

Ok - und kannst du dieses Script - zum besseren helfen hier in Code Blöcke posten?

Nur wie schaffe ich es ein Shell-Script auszufuehren. waehrend dieser
FTP-Verbindung?
gar nicht, aber ftp beherrscht auch den Befehl ls...

Ich hoffe ihr koennt mir bei dem Problem helfen.

Naja - ich hab so scripte hier schon des öfteren geschrieben - sollte eigentlich auffindbar sein - aber weils eh in meinem Scriptordner liegt..

:starter.cmd
ftp -s:C:\script\ftp\connect.txt >C:\script\ftp\ftp.log
find "verzeichnis" "C:\script\ftp\ftp.log" && echo "verzeichnis da"  

:connect.txt
open ftserverip
user
passwd
bin
ls
quit

Das mußt du nur für deine Zwecke anpassen und mal nach den anderen Threads , die es zu dem Thema gibt.

Gruß
L-UniX
L-UniX 07.08.2009 um 12:31:18 Uhr
Goto Top
Hallo,

erstmal danke fuer deine schnelle Hilfe.

Mein Script sah bisher so aus:

echo off
set ftp=<IP-Adresse>
ftp open %ftp%

Also nicht gerade weit, da ich mich erstmal mit der Planung beschaeftigt habe.


Das heißt ich muesste mir erstmal die komplette Struktur vom ftp holen,
auswerten lokal und das fuer jede Datei die ich benoetige....

Omg ;) Das sind 8 Server wird eine schoene Spielerei....


Sollte ich das binnen der naechsten Tage hinbekommen,
dann schmeiss ich das Script hier rein.

Gruß und Danke nochmals.
60730
60730 07.08.2009 um 12:38:08 Uhr
Goto Top
Servus,

Omg ;) Das sind 8 Server wird eine schoene Spielerei....

Nöö - das ist einmal alles durchplanen face-wink

Schreib doch mal lieber detailiert, was du genau vorhast.
Du kannst ja nicht nur das FTP Verzeichnis auslesen (ls), sondern mit dir auch das lokale und die beiden mittels einer Schleife gegeneinander auszuwerten, ist dann ja auch nicht "sooo" das Dingens face-wink

"So" wie ich es skizziert habe - geht es - aber laufen ist ja etwas schneller und sieht IMHO auch schöner aus face-wink

Kennst du wget und wput?

Wenn du nicht auf Winblows Boardmittel angewiesen bist, dann macht das deutlich mehr Spass mit diesen beiden Tools face-wink

Gruß
L-UniX
L-UniX 08.08.2009 um 22:09:52 Uhr
Goto Top
Hallo Timo,

also die Herausforderung ist folgende.

Auf 7 verschiedenen Servern werden sog. CDR-Dateien gelagert, allerdings sind dies Server von verschiedenen Anbietern und ich habe lediglich einen FTP-Zugang um dort manuell die Verzeichnisse einzusehen und dann die Dateien herunterzuladen. Weiterhin ist der Server (von dem aus die Verbindung erfolgt) ein Windows Server 2003. Deshalb hatte ich mir nun einige Gedanken gemacht um diese Herausforderung zu loesen:

- eine Batchdatei fuer jeden Server erstellen, um die CDR-Dateien per FTP zu bekommen
- eine Master-Batch startet die sieben Batchdateien abwechselnd per Taskplaner
- in einer TXT werden die Befehle fuer den FTP-Server gespeichert und dann per FTP -s ausgefuehrt
- nachdem zum Beispiel die Verzeichnisstruktur unterhalb von /jobout ausgelesen wurde, wird diese in eine Logdatei geschrieben und per findstr / find wird dann diese durchsucht und per if errorlevel 1 / 0 eine Abfrage auf ein Wort bzw. einen String innerhalb des Logfiles abgefragt
- bei Erfolg wird das Verzeichnis /cdr auf dem FTP ausgelesen und wieder in die Logdatei geschrieben
- es wird dann im Batchscript noch einmal auf einen String cdr.gz im Logfile gesucht bzw. abgeprueft und bei Erfolg dann die cdr-Dateien aus /cdr und und die Datei aus /jobout per FTP heruntergeladen

Soweit meine Ueberlegungen ;)

Gruß Steven

PS: Sorry dafuer, dass ich keine Umlaute verwende, aber ich habs mir im Bereich der IT abgewoehnt.... Und wget bzw. wput kenne ich, habe allerdings kein Linux zur Verfuegung face-smile
L-UniX
L-UniX 09.08.2009 um 15:23:58 Uhr
Goto Top
Hallo,

ich hab jetzt zumindest eine lauffaehige Version hinbekommen... zumindest um erstmal die beiden Verzeichnisse auf Dateien abzupruefen.

Meine connect.txt:
open <ip-vom-ftp>
<loginuser>
<pw-vom-user>
dir /jobout/
dir /cdr/
quit

Meine ftp.bat:
@echo off
ftp.exe -s:C:\scripts\autorating\connect.txt > C:\scripts\autorating\connect.log
find /i "cdr.job" "C:\scripts\autorating\connect.log" >nul
if errorlevel 1 (
echo "job-Datei wurde nicht auf dem FTP-Server gefunden!"
) else (
echo "job-Datei wurde auf dem FTP-Server gefunden!"
)
find /i "cdr.gz" "C:\scripts\autorating\connect.log" >nul
if errorlevel 1 (
echo "cdr-Datei wurde nicht auf dem FTP-Server gefunden!"
) else (
echo "cdr-Datei wurde auf dem FTP-Server gefunden!"
)
REM if exist C:\scripts\logs do MOVE C:\scripts\autorating\log.txt C:\scripts\logs\log_%date%.txt else mkdir C:\scripts\logs\ && MOVE C:\scripts\autorating\log.txt C:\scripts\logs\log_%date%.txt
pause

Die ftp.bat ist natuerlich erstmal nur eine lauffaehige Version zum testen, ich wuerde gerne mit einer FOR-Schleife arbeiten um die Logdatei mit nur einer Abfrage nach meinen benoetigten Werten / Dateien zu durchsuchen. Ich werde naechste Woche noch etwas weitertuefteln. ;)

Gruß Steven
60730
60730 13.08.2009 um 20:14:11 Uhr
Goto Top
Servus,
Zitat von @L-UniX:
Und wget bzw. wput kenne ich, habe allerdings kein Linux zur Verfuegung face-smile
http://gnuwin32.sourceforge.net/packages/wget.htm
http://wput.sourceforge.net/

Offensichtlich kennst du von Wget und Wput nur die eine hälfte face-wink

Ps: auch wenns dir "geht" - ich würde aus Prinzip lieber ls nehmen face-wink

Und was ich mit dem "planen" meinte - ich würde die 8 FTP Server "verparametrisieren" und mit einem Script alleine den ganzen "Hokuspukus" veranstalten face-wink

Gruß