batch0r

Prüfen, ob Zugriff auf mehrere FTP-Server möglich ist?

Hallo,

angenommen ich verwalte mehrere FTP-Server und diese haben mehrere Logins. Allerdings habe ich derzeit keinen Zugriff auf die Admin-Konsole.
Ich habe alle in einer Textdatei mit folgendem Aufbau:

username1:passwort1@ftp.server1.de
username2:passwort2@ftp.server1.de
username1:passwort1@ftp.server2.de
username2:passwort2@ftp.server2.de

Nun möchte ich nicht alle via copy/paste im Internet Explorer oder einem FTP-Programm einzeln prüfen.

Wie kann ich das mit Hilfe einer Batch-Datei vereinfachen?

Kann ich dies irgendwie mit Hilfe der ftp.exe in Windows/system32 machen?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 148052

Url: https://administrator.de/forum/pruefen-ob-zugriff-auf-mehrere-ftp-server-moeglich-ist-148052.html

Ausgedruckt am: 22.05.2025 um 19:05 Uhr

Friemler
Friemler 31.07.2010 um 23:15:20 Uhr
Goto Top
Hallo batch0r,

hier ein Vorschlag zur Lösung Deines Problems. Ich gehe davon aus, daß Du die Anmeldeinformationen prüfen willst.

@echo off

setlocal

for /f "usebackq tokens=1-3 delims=:@" %%a in ("servers.txt") do (  
  echo open %%c>"%TEMP%\ftpcmd.txt"  
  echo user %%a %%b>>"%TEMP%\ftpcmd.txt"  
  echo bye>>"%TEMP%\ftpcmd.txt"  

  (for /f %%i in ('ftp -n -s:"%TEMP%\ftpcmd.txt" 2^>NUL ^| findstr /b /c:"230"') do (  
    echo Login auf %%c mit Username %%a, Passwort %%b war erfolgreich.
  )) || echo Login auf %%c mit Username %%a, Passwort %%b war nicht erfolgreich.
)

del "%TEMP%\ftpcmd.txt"  

endlocal

Erklärung:
Die äußere FOR-Schleife ließt die Datei servers.txt, die Deine o.g. FTP-Server und Login-Daten enthält, zeilenweise aus. Der Inhalt einer Zeile wird in seine Bestandteile zerlegt. delims=:@ gibt die Trennzeichen an. Die Laufvariable %%a enthält den Usernamen, %%b das Passwort und %%c die Serveradresse. %%b und %%c werden durch die Angabe von tokens=1-3 im Kopf der FOR-Schleife implizit erzeugt (siehe FOR /?, Erklärung zu FOR /F). Durch usebackq kann der Dateiname servers.txt in Anführungszeichen gesetzt werden und dadurch theoretisch auch Leerzeichen enthalten.

Die Werte werden durch die drei ECHO-Befehle am Anfang der FOR-Schleife zusammen mit FTP-Befehlen in die Datei ftpcmd.txt ins Verzeichnis %TEMP% für temporäre Dateien geschrieben. open %%c öffnet die Verbindung zum Server. user %%a %%b übermittelt die Login-Informationen. bye schließt die Verbindung und beedet den FTP-Befehl.

In der inneren FOR-Schleife wird der FTP-Befehl ausgeführt. Durch -n wird die automatische Anmeldung am Server unterdrückt, durch -s:"%TEMP%\ftpcmd.txt" holt sich der FTP-Befehl die FTP-Kommandos aus der eben erzeugten Datei. Durch 2^>NUL werden Fehlermeldungen nicht ausgegeben. Die normale Ausgabe des Befehls wird durch ^| an den FINDSTR-Befehl übergeben, der nach einer Zeile sucht, die mit dem Wert 230 beginnt. Das ist die Statusmeldung für eine erfolgreiche Anmeldung am FTP-Server.


Im nächsten Durchlauf der äußeren FOR-Schleife wird die Datei ftpcmd.txt mit den Daten vom nächsten Server neu angelegt und der Ablauf beginnt von neuem.

Am Schluß wird die Datei ftpcmd.txt wieder gelöscht.

Gruß
Friemler
bastla
bastla 01.08.2010 um 10:59:19 Uhr
Goto Top
@Friemler
Sieht gut aus face-smile

Aus optischen Gründen würde ich die Zeilen 6 bis 8 aber eher so schreiben:
  > "%TEMP%\ftpcmd.txt" echo open %%c  
  >>"%TEMP%\ftpcmd.txt" echo user %%a %%b  
  >>"%TEMP%\ftpcmd.txt" echo bye  
Grüße
bastla

P.S.: "endlocal" wird am Ende des Batches automatisch ausgeführt ...
batch0r
batch0r 01.08.2010 um 11:38:24 Uhr
Goto Top
Vielen Dank für den Code und die ausführliche Beschreibung!
Friemler
Friemler 01.08.2010 um 14:00:36 Uhr
Goto Top
Hallo bastla,

Zitat von @bastla:
Sieht gut aus face-smile

Danke! face-smile

> "%TEMP%\ftpcmd.txt" echo open %%c  
>>"%TEMP%\ftpcmd.txt" echo user %%a %%b  
>>"%TEMP%\ftpcmd.txt" echo bye  

Interessant zu wissen, daß das auch funktioniert. Sieht auch besser aus. Danke.

P.S.: "endlocal" wird am Ende des Batches automatisch ausgeführt ...

Schon klar, aber das ist meine "Coding-Ästhetik": geöffnete Blöcke auch wieder schließen, mache ich in HTML wenn möglich auch.

Gruß
Friemler