Wer kennt die Situation nicht: Man will nur mal eben eine Datei auf einen anderen Rechner schicken; sei es der PC eines Freundes, der gerade zu Besuch ist, oder auf einen Zweitrechner. An Möglichkeiten, die Datei zu übertragen, fehlt es nicht, nur kann es eben nie schnell genug gehen. Extra einen USB Stick suchen? Ne, keine Ahnung wo noch einer herumliegt! Irgendwelche Freigaben einrichten, die dann doch nicht funktionieren? Spezielle Programme? Apache Webserver? FTP Server? Alles viel zu aufwändig. Es muss einfach und vor allem schnell funktionieren und der Empfänger soll nicht an eine bestimmte Plattform gebunden sein.
Hier habe ich ein zwei verschiedene Einzeiller für die Linux Kommendozeile für euch, die einen schnellen, effektiven Dateiaustausch via HTTP ermöglichen. Der Empfänger muss nur noch die IP Adresse des anbietenden Rechners in die Adresszeile seines Webbrowsers eingeben; gefolgt von dem Port, auf dem das Script arbeitet.
Möglichkeit 1: Über nc und cat
while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; cat Dateiname; } | nc -l 8080; done
Quelle: Webserver als Shell-Einzeiler
„Dateiname“ muss selbstverständlich mit dem Pfad der Datei bzw dem Dateinamen ersetzt werden, unter dem die freizugebende Datei gefunden werden kann ;) Zugriff via „http://Rechner-IP:8080“
Möglichkeit 2: Über Pythons „SimpleHTTPServer“
python -m SimpleHTTPServer
Quelle: User „Cocker68“ | Geraspora
Dieser Befehl gibt den kompletten Ordner, in dem es aufgeführt wird, frei. Eignet sich also, wenn es mal mehrere Dateien sind, die übertragen werden sollen. Der Zugriff erfolgt standardmäßig über „http://Rechner-IP:8000“.
Wenn der Port schon belegt ist, kann man – wie bei der ersten Befehlskette auch – auf einen anderen Port ausweichen. Bei diesem Einzeiler genügt es, den Port einfach hinten anzuhängen:
python -m SimpleHTTPServer 8080
… und schon wird Port 8080 zur Übertragung genutzt.
Kennt ihr noch andere schnelle Methoden, um eine Datei auf einen anderen Rechner zu übertragen? Lasst es mich wissen! ;)
http://www.home.unix-ag.org/simon/woof.html
Ein kleines Python-Tool, was genau dieses Problem lösbar macht.
http://danjou.de
Ich schätze Python sehr, aber es ist viel zu lahm, was solche Sachen angeht. Ich installiere für sowas immer „webfs“ (gibt’s eigentlich für jede Distro paketiert).
Hi
Alle drei verlinkten Möglichkeiten finde ich sehr spannend, der http-Einzeiler nennt sich bei mir ‚gibordnerfrei‘, oder der ganze ‚Befehl‘:
$ alias gibordnerfrei=’python -m SimpleHTTPServer‘
( eingetragen in der .bash_aliases )
trotz ohne Fasebock *gefällt mir*
hatte letztens das Problem, eine 6GB-Datei per LAN auf einen Netbook zu bekommen.
Eigentlich nutze ich für so was PidGin mit dem Protokoll Bonjour, allerdings ist dort die Filegröße auf 2004MB (angetestet, laut Wiki bei ubuntuusers 2GB) beschränkt und es kommt drüber Müll an (mit max 2GB Größe).
Hiermit wäre das Alles wohl schneller gelaufen.
Nachtrag
Liest sich jetzt so, daß PidGin hier der Übeltäter war, Dem ist aber nicht so!
Ich benutze seit langer Zeit, wie oben geschrieben, PidGin mit Bonjour, womit man einen 1-A LAN-Chat m it ‚Datei-schiebe-Funktion‘ bekommt.
Die Begrenzung auf ca. 2GB war mir zuvor noch nie aufgefallen und die Begrenzung fand ich erst nach Stunden der Recherche, eben, daß es am Protokoll liegt, Welches eben nur 2GB zulässt.
Das Bonjour-Protokoll hat den großen Vorteil. daß ALLE Bonjour-Rechner im LAN (auch VMs) in der Buddy-Liste angezeigt werden und mit Jedem davon geschrieben werden kann.
Nutze ich viel zum Verschieben von CAD-Zeichnungen in die VM und die generierten Fräsbahnen zum Fräs-Rechner (emc³).
Unter Windows klappt Das auch, sind aber 2 DLLs und noch eine kleine Installation nötig (müsste nachschauen, aber unter Win ist man es ja gewohnt, Treiber im INet von diversen Seiten zu saugen, kommt auf die drei Files nun auch nicht drauf an).