Το Στέκι των Πληροφορικών

Γενικά => Τεχνική υποστήριξη => Linux => Μήνυμα ξεκίνησε από: alkisg στις 30 Ιαν 2012, 01:07:01 ΜΜ

Τίτλος: Εκκίνηση web/file server με μια μόνο εντολή
Αποστολή από: alkisg στις 30 Ιαν 2012, 01:07:01 ΜΜ
Ένας γρήγορος τρόπος να μοιράσουμε αρχεία στο τοπικό δίκτυο είναι να πάμε στον κατάλογο που θέλουμε και να τρέξουμε την παρακάτω εντολή:
Κώδικας (shell) [Επιλογή]

python -m SimpleHTTPServer


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

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

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



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

...από όπου και κατεβάζουμε εύκολα τα αρχεία που μας ενδιαφέρουν.
Τίτλος: Απ: Εκκίνηση web/file server με μια μόνο εντολή
Αποστολή από: apanagio στις 03 Φεβ 2012, 02:15:42 ΜΜ
Πολύ ωραίο 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
Τίτλος: Απ: Εκκίνηση web/file server με μια μόνο εντολή
Αποστολή από: gidarakos στις 18 Δεκ 2015, 12:45:56 ΜΜ
Μία μικρή επικαιροποίηση στο:
Παράθεση από: 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

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