Serve current directory tree at http://$HOSTNAME:8000/

python -m SimpleHTTPServer

814
By: pixelbeat
2009-02-05 11:57:43

8 Alternatives + Submit Alt

What Others Think

To use a different port: python -m SimpleHTTPServer 8080
taoufix · 493 weeks and 1 day ago
Many thx to the both of you and python developers :)
AmadeusZull · 491 weeks and 1 day ago
python -m SimpleHTTPServer +Serving HTTP on 0.0.0.0 port 8000 ... ....
grep · 490 weeks and 4 days ago
Cool. I'd been using webfs for this. http://linux.bytesex.org/misc/webfs.html
Viaken · 488 weeks and 3 days ago
This is great way to get something to open without configuring webserver. I love it.
k00pa · 487 weeks and 2 days ago
See also CGIHTTPServer
dstahlke · 484 weeks and 4 days ago
Awesome!!
d4n3sh · 483 weeks and 2 days ago
How to kill the servers? :P
Meeko · 483 weeks and 1 day ago
I changed this up a bit and added it to my .bashrc. My function also logs into my web server via ssh and forwards a port back to me. It also copies the URL to my primary selection. webshare () { local SSHHOST=hostname.of.server python -m SimpleHTTPServer & echo http://$SSHHOST:8000 | xclip echo Press enter to stop sharing, http://$SSHHOST:8000 copied to primary selection /usr/bin/ssh -R 8000:127.0.0.1:8000 $SSHHOST 'read' kill `jobs -p | head` }
wonko · 479 weeks and 2 days ago
Neat. I've been using a more complicated system: # Create an index.html, trying to preserve names with whitespace du -a | awk ?{ print $2,$3,$4,$5}? | \ until [[ -z $L ]]; do read L; echo ??$L??; done > ./index.html; #Instantiate an SSL web server on port 8080 openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout \ server.pem -out server.pem -subj ?/C=XX/O=XX/OU=XX/CN=XX?; openssl s_server -accept 8080 -WWW
lbonanomi · 462 weeks and 4 days ago
Wow, quoting went horribly wrong there. # Create an index.html, trying to preserve names with whitespace du -a | awk '{ print $2,$3,$4,$5}' | until [[ -z $L ]]; do read L; echo ''$L''; done > ./index.html; #Instantiate an SSL web server on port 8080 openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout \ server.pem -out server.pem -subj ?/C=XX/O=XX/OU=XX/CN=XX?; openssl s_server -accept 8080 -WWW
lbonanomi · 462 weeks and 4 days ago
nice ! tfs
sazwqa · 441 weeks and 5 days ago
all of the hacking around detracts from the beautiful simplicity of this command. I'm totally in love with this. I'd up-vote it a 100 times if I could. Nice work.
4fthawaiian · 438 weeks and 6 days ago
nice
warlock · 438 weeks and 5 days ago
awesome
tunguyen · 435 weeks ago
This is a great trick! Does anyone know similar trick that invoke simple FTP server?
yorams70 · 434 weeks and 6 days ago
If you don't know how to kill the server (^c doesn't work) try the following kill `ps | grep SimpleHTTP | grep -v grep | awk '{print $1}'`
jafraldo · 430 weeks and 1 day ago
In order to kill the server you can try: killall python
samy · 402 weeks and 6 days ago
killall python is too brutal. It may kill some useful python process accidently .
al_crow · 373 weeks and 1 day ago
Just run to view firefox http://$HOSTNAME:8000/
totti · 364 weeks ago
This is awesome. Does anyone know how to do this with Python 2.3 or earlier?
adamlehenbauer · 360 weeks ago
http://ubuntuguide.net/http-server-support-uploading-files-from-windows-in-ubuntu I found a python script that support uploading files. It's useful.
franzcai · 306 weeks and 2 days ago
I tried using this to quickly send a folder full of games to some people on my LAN, but it would only let one person download at a time. Try sudo apt-get install python-twistd-web twistd -no web instead.
nkorth · 232 weeks and 5 days ago

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands



Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: