Εκκίνηση web/file server με μια μόνο εντολή

Ξεκίνησε από alkisg, 30 Ιαν 2012, 01:07:01 ΜΜ

« προηγούμενο - επόμενο »

alkisg

Ένας γρήγορος τρόπος να μοιράσουμε αρχεία στο τοπικό δίκτυο είναι να πάμε στον κατάλογο που θέλουμε και να τρέξουμε την παρακάτω εντολή:
Κώδικας: shell
python -m SimpleHTTPServer


Αυτή η εντολή ξεκινάει έναν μικρό web server ο οποίος σερβίρει τα περιεχόμενα του τρέχοντος καταλόγου στο δίκτυο. Επειδή από προεπιλογής χρησιμοποιεί τη θύρα 8000, δεν συγκρούεται με άλλους web servers που πιθανώς να έχουμε εγκατεστημένους.

Παράδειγμα. Έστω ότι θέλουμε να στείλουμε τον win32-loader.exe boot loader στους clients μας που έχουν Windows 2000, και δεν θέλουμε να εγκαταστήσουμε κοινή χρήση αρχείων (samba) στο server. Πηγαίνουμε στον κατάλογο που έχουμε τον win32-loader με την εντολή cd, τρέχουμε τον SimpleHTTPServer όπως προαναφέρθηκε, και στη συνέχεια από τους clients ανοίγουμε τον web browser μας και επισκεπτόμαστε τη διεύθυνση http://server-ip:8000. Εκεί θα δούμε μια ιστοσελίδα σαν την παρακάτω:

Παράθεση
Directory listing for /



  • win32-loader
  • other-files
  • more-files

...από όπου και κατεβάζουμε εύκολα τα αρχεία που μας ενδιαφέρουν.

apanagio

Πολύ ωραίο tip αυτό.
Ένα θέμα που υπάρχει είναι με τα ελληνικά ονόματα αρχείων.
Για να το διορθώσουμε αρκεί να πούμε στο server να στέλνει charset utf8 (το charset του filesystem για την ακρίβεια) στα headers
Ανοίγουμε το SimpleHTTPServer.py
sudo gedit /usr/lib/python2.6/SimpleHTTPServer.py

Προσθέτουμε στα imports τη γραμμη
import sys

Λίγο μετα τη γραμμή 130 που λέει
length = f.tell()
        f.seek(0)
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.send_header("Content-Length", str(length))
        self.end_headers()
        return f

αντικαθιστούμε τη γραμμή
self.send_header("Content-type", "text/html")

με τις γραμμές
encoding = sys.getfilesystemencoding()
self.send_header("Content-type", "text/html; charset=%s" % encoding)


Πηγή:
http://bugs.python.org/issue11442
http://hg.python.org/cpython/rev/e9724d7abbc2

gidarakos

#2
Μία μικρή επικαιροποίηση στο:
Παράθεση από: apanagio στις 03 Φεβ 2012, 02:15:42 ΜΜ
Ανοίγουμε το SimpleHTTPServer.py
sudo gedit /usr/lib/python2.6/SimpleHTTPServer.py


Με αυτό:
Κώδικας: bash
sudo gedit /usr/lib/python2.7/SimpleHTTPServer.py


Αν και όπως είδα πλέον είναι διορθωμένο, οπότε λογικά δεν πρέπει να υπάρχει πρόβλημα με τα ελληνικά ονόματα αρχείων!