2012-05-30 10 views
7

Ja, ich weiß, FTP ist besser als Telnet, aber im Moment stecke ich mit Telnet fest. Ich kann mich schon anmelden, etc .. es ist nur, dass ich keine Datei bekommen kann. Ich habe es gegoogelt und es gab mir diese:Telnet verwenden, um eine Datei vom/zum Server zu übertragen

(aus: http://www.webdigi.co.uk/blog/2009/ftp-using-raw-commands-and-telnet/)

220 ProFTPD 1.3.1 Server (ProFTPD) [64.170.98.33] 
USER anonymous 
331 Anonymous login ok, send complete email address as your password 
PASS [email protected] 
230 Anonymous access granted, restrictions apply 
CWD ietf/ftpext/ 
250 CWD command successful 
PASV 
227 Entering Passive Mode (64,170,98,33,151,31). 
RETR ftpext-charter.txt 
150 Opening ASCII mode data connection for ftpext-charter.txt (6060 bytes) 
226 Transfer complete 
QUIT 
221 Goodbye. 

Nun, wie Sie sehen können, die Person hier verwendet RETR die Datei zu erhalten. Wie auch immer, wenn ich das mache .. es führt es einfach aus .. und .. tut nichts. Es bleibt einfach dort. Weiß jemand, wie man das anpackt?

Danke!

Edit: Im Moment versuche ich alles richtig zu machen, indem ich telnet auf meiner Windows-Maschine benutze, weil ich mit meinem Skript festgefahren bin. Ich versuche, ein Skript auf meinem Server zu schreiben, das einfach (automatisch) einige Dateien von einem anderen Server (mit Hilfe von Netsock) im "Hintergrund" auf einer täglichen Basis ... und ohne Interaktion von irgendjemandem einliest.

screenie des RETR:

screenshot

+2

Das macht FTP. Nicht Telnet. – adarshr

+1

Wenn Sie Dateien über Telnet senden möchten, können Sie das tun (nicht so, es ist eine FTP-Sitzung, die Sie betrachten), aber Sie müssen dies mit einigen Pipes und der Umleitung von IO arrangieren. Es ist jedoch keine Programmierfrage, wie auch immer. Und du wärst * viel * besser dran mit ssh/scp als Telnet. – Flexo

+0

Und was bekommst du? Haben Sie einen Screenshot davon, einschließlich Ihrer Telnet-Befehlszeile? –

Antwort

5

Sie können nicht Ftp mit Telnet. Ftp benötigt einen Befehlskanal und einen Datenkanal. Sie können den Befehlskanal mit Telnet verwenden, aber Sie können den Datenkanal nicht mit Telnet verwenden. Das Ergebnis ist, was Sie sehen. Weitere Details sind in der Ftp RFC: http://www.ietf.org/rfc/rfc959.txt

+0

Wenn Sie den passiven Modus verwenden, können Sie den Datenkanal in einem anderen Telnet verwenden. –

+0

Ja, um den Inhalt der Binärdatei in Ihrem Telnet-Terminal zu lesen. Die einzige nützliche Möglichkeit, den Inhalt des Datenkanals zu erfassen, ist die Verwendung von netcat: 'nc -n -l -p Dataport> download'. Aber anstatt netcat zu installieren, wäre es * viel * einfacher, * wget *, * curl *, * lftp * oder den guten alten Standard * ftp * -Client zu verwenden. – ceving

6

Wenn das System, das Sie telnet-zu Python auf ihm installiert haben (die meisten Unix-basierten Systeme haben heutzutage einige Version von Python standardmäßig installiert), können Sie eine Ultra-starten einfacher Python-HTTP-Server mit diesem Befehl:

$ python -m SimpleHTTPServer 

Stellen Sie sicher, dass Sie dies im selben Verzeichnis ausführen, in dem sich die Dateien befinden, die Sie übertragen möchten. öffnen Sie eine beliebige Web-Browser und verweisen Sie auf die gleiche Adresse, an die Sie Telnet-ing sind, außer der Verwendung von Port 8000, zum Beispiel:

http://192.168.2.1:8000/ 

(nur ersetzen die IP-Adresse mit der aktuellen Adresse der Remote-Rechner) . Dadurch wird eine Liste der Dateien im Browser geladen, und Sie können mit der rechten Maustaste klicken und alle gewünschten Dateien speichern.

Hoffe, das hilft!

+0

Danke Jordanien. Ich habe gerade meine ursprüngliche Frage bearbeitet, um meine Situation zu verdeutlichen: Ich möchte eine Dateiübertragung automatisieren, also würde sie jeden Tag (zum Beispiel) eine bestimmte Datei von einem anderen Server abrufen. Ich möchte also keinen Webbrowser öffnen oder irgendetwas ... alles muss im Hintergrund passieren. – Malachi

+1

Ich möchte nur hinzufügen, dass es in Python 3 python -m http.server ist – pugnator