Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

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

Frage Entwicklung Batch & Shell

Mitglied: batch0r

batch0r (Level 1) - Jetzt verbinden

31.07.2010 um 20:53 Uhr, 4635 Aufrufe, 4 Kommentare

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?
Mitglied: Friemler
31.07.2010 um 23:15 Uhr
Hallo batch0r,

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

01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
for /f "usebackq tokens=1-3 delims=:@" %%a in ("servers.txt") do ( 
06.
  echo open %%c>"%TEMP%\ftpcmd.txt" 
07.
  echo user %%a %%b>>"%TEMP%\ftpcmd.txt" 
08.
  echo bye>>"%TEMP%\ftpcmd.txt" 
09.
 
10.
  (for /f %%i in ('ftp -n -s:"%TEMP%\ftpcmd.txt" 2^>NUL ^| findstr /b /c:"230"') do ( 
11.
    echo Login auf %%c mit Username %%a, Passwort %%b war erfolgreich. 
12.
  )) || echo Login auf %%c mit Username %%a, Passwort %%b war nicht erfolgreich. 
13.
14.
 
15.
del "%TEMP%\ftpcmd.txt" 
16.
 
17.
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.

Wenn FINDSTR eine solche Zeile findet, wird der ECHO-Befehl in der inneren FOR-Schleife ausgeführt (Login auf <Server> mit Username <Username>, Passwort <Passwort> war erfolgreich). Wenn FINDSTR keine Zeile, die mit 230 beginnt, findet, wird durch || der ECHO-Befehl nach der inneren FOR-Schleife ausgeführt (Login auf <Server> mit Username <Username>, Passwort <Passwort> war nicht erfolgreich).

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
Bitte warten ..
Mitglied: bastla
01.08.2010 um 10:59 Uhr
@Friemler
Sieht gut aus

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

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

Zitat von bastla:
Sieht gut aus

Danke!

01.
> "%TEMP%\ftpcmd.txt" echo open %%c 
02.
>>"%TEMP%\ftpcmd.txt" echo user %%a %%b 
03.
>>"%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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Netzwerkmanagement
Zugriff auf FTP-Server durch Chrome in Windows 7 klappt nicht (3)

Frage von emilien2 zum Thema Netzwerkmanagement ...

Linux Tools
CURL mehrere Dateien vom ftp-Server herunterladen (10)

Frage von highpriest zum Thema Linux Tools ...

Cloud-Dienste
gelöst Eigener Exchange Server möglich ? In der Cloud ? (4)

Frage von power-user zum Thema Cloud-Dienste ...

Apple
IPhone 6 im WLAN kein Zugriff auf Exchange Server (8)

Frage von montana zum Thema Apple ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...