Wer kennt das Problem nicht?
Man möchte schnellst möglich Dateien von einem Rechner auf einen anderen kopieren (weil man beispielsweise mit seinem Freund in Berlin kommuniziert und er dringend Datein benötigt) und es ist gerade ziemlich unbequem oder gar unmöglich, dies auf herkömmliche Wege, wie mit einem USB-Stick oder einer SMB-Freigabe zu bewerkstelligen und ein Webbrowser (beispielsweise “Apache”) ist nicht installiert und würde auch zu viel Zeit in Anspruch nehmen um einen solchen noch “schnell” aufzusetzen. Was tun?
Im Netz bin ich auf interessante Lösungen gestoßen.
1. Normaler Shell-Einzeiler
In seinem Blog hat der Entwickler Razvan Tudorica folgenden Einzeiler beschrieben:
while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; cat Dateiname; } | nc -l 8080; done
Dieser ermöglicht, nachdem er auf Rechner 1 implementiert wurde und dort auch läuft, Rechner 2 über den Webserver eine Datei zu erhalten die dort vorher gespeichert und freigegeben wurde.
Beispiele für die Nutzung von Netcat (nc) hier und hier.
Aufrufen kann man diesen Webserver mit dem herkömmlichen Muster
http://host-Adresse:8080
Ein weiterer Vorteil der sich aus diesem Datentransfer durch den Webserver ergibt, ist, dass man ganz bequem über die Shell mitlesen kann, wer an den Webserver Anfragen für die Daten schickt.
Auf den Blog von Razvan Tudorica bin ich durch diesen Blog und durch meinen Chef aufmerksam geworden.
2. Mittels Python
Wie ich bereits erwähnt habe, ist es dem Nutzer des oben genannten Einzeilers jedoch nur ermöglicht eine einzige Datei in den Webserver zu laden. Wenn man also mehrere Dateien hochladen möchte, muss man den Befehl immer und immer wieder wiederholen.
Hier hilft Python. Mittels dem Kommando
python -m SimpleHTTPServer
ist es nun möglich ganze Verzeichnisse auf einmal hochzuladen (dieses Kommando lädt das Verzeichniss hoch, in dem man sich momentanlich in der Shell aufhällt, also VORSICHT!)
Wenn es euer Interesse geweckt hat, probiert es doch einfach mal aus. Beides sind sehr nette Alternativen mit ihren jeweiligen Vorzügen.
0 Comments