magnifico
Goto Top

FTP Login mit Abfragen

Moin ihr Batch kundigen, ich brauchte mal etwas Hilfe von euch, da ich mich mit dieser Materie überhaupt nicht auskenne.
ich brauche eine Batch-Datei welche folgendes macht:
FTP-Verbindung zu einem bestimmten Server herstellt und dann erstmal aktiv nach Benutzer und Passwort fragt (Benutzername und Passwort sollen aus Sicherheitsgründen nicht fest hinterlegt sein), dann soll automatisch lokal und auf dem Server automatisch in ein Bestimmtes Verzeichnis gewechselt werden, dann soll eine Datei abgeholt werden (get), es soll aber aktiv nach dem Dateinamen gefragt werden.

dies wird täglich Manuel immer gemacht und um dies etwas zu verkürzen wäre so eine Batch-Datei denke ich sehr sinnvoll.

Content-Key: 167847

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

Printed on: April 23, 2024 at 14:04 o'clock

Member: Skyemugen
Skyemugen Jun 10, 2011 at 09:40:31 (UTC)
Goto Top
Aloha,

nö, macht keinen Sinn für mich - Filezilla auf, Anmelden, das bestimmte Verzeichnis lässt sich bereits vorher definieren und dann kann man die Datei auch dort auswählen und herunterladen ...

Wenn man noch manuell alles eingeben soll (vorallem Abfrage des Dateinamen ...) dann sehe ich keinen Sinn für eine Batchdatei hier.

greetz André
Member: Magnifico
Magnifico Jun 10, 2011 at 09:59:06 (UTC)
Goto Top
danke schomal für dein Kommentar, grundsätlich würde dies sicher auch funktionieren, aber wozu ein extra Programm nutzen wenn es auch per script umzusätzen geht, klickibunti soll es in diesm Fall nicht sein.
Member: Skyemugen
Skyemugen Jun 10, 2011 at 10:21:56 (UTC)
Goto Top
Aloha,

es geht auch per Firefox FireFTP plugin also ohne extra FTP-Clientprogramm aber gerade die Auswahl der gewünschten Datei sollte doch per drag&drop einfacher laufen, denke ich.

Also ich habe es doch richtig interpretiert, dass der User den Dateinamen selber eingeben soll, oder soll eine Verzeichnisabfrage gestartet werden, woraus der User dann z.B. per zugeordneter Zahl die Wahl hat?

greetz André
Member: Magnifico
Magnifico Jun 10, 2011 at 10:32:49 (UTC)
Goto Top
Ja, der User soll den Dateinamen selber eingeben. Zu deinem zweite Vorschlag, auch dies geht nicht, es soll keine zusätzliche Software installiert werden, es sollen nur die integrierten Windows -Elemente genutzt werden.
Member: Friemler
Friemler Jun 10, 2011 at 10:50:24 (UTC)
Goto Top
Hallo Magnifico,

teste mal das hier:
@echo off

setlocal

cls

set "FTPServer=ftp.DerServer.Domain"  
set "RemoteDir=Das/Remote-Verzeichnis"  
set "LocalDir=Das\Lokale Verzeichnis"  


set "FTPGetDir=%TEMP%\ftpcmd.txt"  
set "FTPGetFile=%TEMP%\ftpcmd.txt"  

set /p "Usr=Benutzername: "  
set /p "Pwd=Passwort    : "  
echo.

> "%FTPGetDir%" echo open %FTPServer%  
>>"%FTPGetDir%" echo user %Usr% %Pwd%  
>>"%FTPGetDir%" echo ascii  
>>"%FTPGetDir%" echo cd "%RemoteDir%"  
>>"%FTPGetDir%" echo ls -l  
>>"%FTPGetDir%" echo bye  

ftp -v -n -s:"%FTPGetDir%"  
del "%FTPGetDir%"  

echo.
set /p "File=Dateiname: "  

> "%FTPGetFile%" echo open %FTPServer%  
>>"%FTPGetFile%" echo user %Usr% %Pwd%  
>>"%FTPGetFile%" echo binary  
>>"%FTPGetFile%" echo cd "%RemoteDir%"  
>>"%FTPGetFile%" echo get "%File%" "%LocalDir%\%File%"  
>>"%FTPGetFile%" echo bye  

ftp -v -n -s:"%FTPGetFile%"  
del "%FTPGetFile%"  

Die Verbindung wird zweimal hergestellt. Beim ersten mal wird nur das gewünschte Remoteverzeichnis angezeigt. Dann Dateiname einlesen, ein zweites Mal die Verbindung herstellen und downloaden.

Die Variablen in den Zeilen 7 bis 9 an Deine Bedürfnisse anpassen. Dabei ist der Slash statt dem Backslash im Remote-Verzeichnispfad zu beachten.

Sollte es sich bei der Datei um eine Textdatei handeln, sollte das binary in Zeile 34 durch ascii ersetzt werden, dann werden Zeilenumbrüche ins Windowsspezifische Format konvertiert. Der Übertragungsmodus ist standardmäßig zwar sowieso ASCII, aber ohne die Befehle zur Umschaltung hat bei meinem Test mit dem AVM-FTP-Server der Verzeichniswechsel nicht funktioniert. Anscheinend wird nach dem Login noch eine kurze Verzögerung benötigt.

Gruß
Friemler
Member: Skyemugen
Skyemugen Jun 10, 2011 at 11:05:20 (UTC)
Goto Top
Aloha Magnifico und Friemler, da war man mal eben Mittag essen *pfeif*

nun ich gehe davon aus, er weiß, wo er hinwill und gibt das vor,
dann soll automatisch lokal und auf dem Server automatisch in ein Bestimmtes Verzeichnis gewechsel
daher:

@echo off & setlocal
set "log=%temp%\aktiv.ftp"  
echo Bitte geben Sie den FTP-Benutzernamen ein: 
set /p "login="  
echo(
echo Bitte geben Sie das Passwort ein: 
set /p "pwd="  
echo(
echo Bitte geben Sie den Dateinamen ein: 
set /p "Datei="  
echo(

(echo open ftp.diegewuenschtedomain.de
echo %login%
echo %pwd%
echo binary
echo cd "www/htdocs/downloads"  
echo lcd "E:/Test"  
echo get "%Datei%"  
echo bye)>"%log%"  
echo Starte FTP-Transfer . . .
ftp -s:"%log%"  
echo Fertig.
del "%log%"  
pause
goto :eof

open ftp.diegewuenschtedomain.de = ist klar, oder?
cd "www/htdocs/downloads" = Der Pfad im FTP
lcd "E:/Test" = Der lokale Pfad
Editiere die Pfade, speichere die .bat (oder .cmd) und vermeide Umlaute face-wink

greetz André

edit: binary und so ...
Member: Friemler
Friemler Jun 10, 2011 at 11:38:49 (UTC)
Goto Top
Hi André,

bei der Übertragung von Binärdateien kommt ohne den Befehl binary aber nur Wurstsalat auf dem lokalen System an... face-wink

Gruß
Friemler
Member: Skyemugen
Skyemugen Jun 10, 2011 at 11:51:23 (UTC)
Goto Top
Aloha Friemler,

öhm joa, das ging doch irgendwie unter, glaube beim Löschen der REM-Zeilen, habe ich das wohl miterwischt, hehe.

greetz André
Member: Magnifico
Magnifico Jun 10, 2011 at 11:54:08 (UTC)
Goto Top
Hey Friemler und Andre, danke für eure Bsp's,
Andre mal eine kleine nach frage zu deinem code, bzw. zu dem Ablauf, laut deinem code wird doch eine temp. Log-Datei erstellt mit den 3 Variablen oder täusche ich mich da? lässt sich das vielleicht auslassen, dh. dass es abgefragt wird und dann direkt verarbeitet ohne zwischen zuspeichern, oder ist die zu komplex für batch?
Member: Skyemugen
Skyemugen Jun 10, 2011 at 12:30:19 (UTC)
Goto Top
Aloha,

das ist bei Friemler nicht anders (vorweg gesagt) und es ist auch nicht vermeidbar, da ftp eigenständig arbeitet und per batch dann nur ftp -s:DateimitallenbenötigtenInhalten.ftp zulässt - sprich:
ftp
open ftp.domain.de
username
password

etc.
Funktioniert nicht, weil ab dem Befehl ftp, die Batch nicht mehr greift.
Die temporäre Logdatei wird ja gleich nach der Benutzung wieder gelöscht und wenn du ohne arbeiten willst, dann nur über die cmd mit aktiver Steuerung (also ohne batch)

greetz André
Member: Friemler
Friemler Jun 12, 2011 at 14:05:58 (UTC)
Goto Top
Hallo Magnifico,

schau Dir mal die NcFTP-Suite an. Darin ist NcFTPGet enthalten. Dieses Konsolenprogramm ist nur zum schnellen Download einer Datei gedacht und man kann Benutzer und Passwort als Parameter übergeben => Kein Anlegen einer Datei mit FTP-Kommandos erforderlich, daher können Benutzer und Passwort direkt aus den eingelesenen Variablen übergeben werden.

Gruß
Friemler