Sometimes as admins, we need to share files across systems quickly. For whatever reason, we need to get a single
conf file from one system to another, or maybe copy a group of files between systems. We find that we need to install a package or utility to share the files, or we may need to enable a feature to share the content. Regardless of the situation, we can use Python's
SimpleHTTPServer module as a quick web server.
Python -m SimpleHTTPServer
SimpleHTTPServer module is a Python module that enables a developer to lay the foundation for developing a web server. However, as sysadmins, we can use the module to serve files from a directory.
Python must be installed to use the
SimpleHTTPServer module. Python may be installed as a dependency to an application or service that is already running on the system. Run
python -V to verify its presence. To use the module for our purposes, run the following command from the directory with the files we want to share:
python -m SimpleHTTPServer
* Note: The module has been renamed
http.server in python3
The module loads and serves any files within the directory on port 8000 by default.
From the remote system, browse to
http://<ip> using your browser of choice. A directory listing will be displayed where you can open or download any file.
Another option is to use
curl to download the files to the remote system.
wget http://<ip>:8000/filename curl http://<ip>:8000/filename
This simple local HTTP server is a nice little utility to use in those times when you need to transfer files quickly across systems.
This tip is not a replacement for actual file-hosting solutions in business environments. The
SimpleHTTPServer module is actually a development tool used as a framework tool to lay the foundation for a full-blown web server with all the necessary security features included. However, we can use the module for our purposes to:
- Quickly serve kickstart files in a pinch - Copy the
/root/original-ks.cfgto a folder and serve with
python -m SimpleHTTPServer. Edit the grub config at boot, and away you go.
- Share a file to/from a VM - Copy a file to a folder and serve with
python -m SimpleHTTPServer.
- Serve a file on an allowed port of firewall - Copy a file to a folder and serve with
python -m SimpleHTTPServer port
You can also use a
while loop with
/dev/tcp/host/port for transport… but that is another article. I hope you find this option a useful tool in your toolbox.
You may need to open ports in your firewall:
# firewall-cmd --add-port=portnumber/tcp
[ Download now: A sysadmin's guide to Bash scripting. ]