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, 4642 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 ..
Ähnliche Inhalte
Linux Tools
CURL mehrere Dateien vom ftp-Server herunterladen (10)

Frage von highpriest zum Thema Linux Tools ...

Batch & Shell
gelöst Update mehrerer Verzeichnisse auf FTP-Server (3)

Frage von caspi-pirna zum Thema Batch & Shell ...

TK-Netze & Geräte
IP Cam und FTP Server auf der EasyBox (11)

Frage von RaMimi zum Thema TK-Netze & Geräte ...

Windows Server
Probleme mit Client Software Zugriff auf Windows Server 2012 (8)

Frage von it-kolli zum Thema Windows Server ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(5)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (19)

Frage von SarekHL zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...