Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 4659 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
Windows Server
FTP Zugriff per VPN auf Server 2008 - Fehler (2)

Frage von Markowitsch zum Thema Windows Server ...

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

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

Windows Server
gelöst Pllötzlich kein Remote Zugriff auf Win Server 2012 R2 mehr möglich (3)

Frage von AlanHartmann zum Thema Windows Server ...

Windows Server
FTP-Zugriff auf Server2016 Essential (1)

Frage von angler2001 zum Thema Windows Server ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Windows 10
Windows 10 Ordnerfreigabe (19)

Frage von Xaero1982 zum Thema Windows 10 ...

Monitoring
Netzwerk-Monitoring Software (17)

Frage von Ghost108 zum Thema Monitoring ...

Windows Server
gelöst Kopiervorgang schlägt fehl, weil Datei- und Ordnername zu lang sind (14)

Frage von Schroedi zum Thema Windows Server ...