BeagleBone FTP Server
The BeagleBone has multiple text editors available onboard, including
vim. I can stumble around (badly) in vi. Using Vim is a little prettier, but not much – I’m really much more of a modal-editor guy. On the Mac, I use BBEdit when I’m not using XCode for iPhone and iPad development.
So my goal is to be able to easily edit on my Mac. BBEdit has a very slick ability to edit files via FTP, so that’s my next step.
Oddly, the BeagleBone doesn’t have an FTP server available in the default distribution. (or if it does, I couldn’t find it)
One skill I know I need to brush up on is acquiring, building, and installing packages in Linux. Since I wanted a quick-and-dirty FTP server running without too much fuss, I naturally looked to Python.
Python is a terrific “scripting” language, and my go-to tool for a lot of tasks.
There is a very nice FTP Server library available: pyftpdlib.
I grabbed this using
wget, then did the unzip/untar dance:
gunzip pyftp* tar -xf pyftp*.tar
Installation was simple. The setup python program failed, so I just manually moved the
pyftpdlib directory into
Last but not least, I whipped up a small Python program by modifying the quickstart and demo examples just a bit:
# FTP server from pyftpdlib import ftpserver authorizer = ftpserver.DummyAuthorizer() authorizer.add_user("root", "12345", "/home/root", perm="elradfmw") handler = ftpserver.FTPHandler handler.authorizer = authorizer address = ("", 21) ftpd = ftpserver.FTPServer(address, handler) ftpd.serve_forever()
Take that code, stuff it into a file with a
.py extension (e.g.
ftpserver.py), and invoke it:
And there you go – FTP access to the home directory of user
Now, is this what you’d use to server files to the world at large? Maybe – it looks like a very complete implementation, although I’m no FTP expert.
But it’s perfect for my local development purposes.
The only thing that would be nice is to have it auto-start. That’s pretty easy to do as well, at least in the simple case.
/etc/init.d contains scripts that are executed upon system startup. We place a very simple shell script there, which I called
#!/bin/sh python /home/root/ftpserver.py
This will run the Python FTP server program (which in this case is located in the root account’s home directory – it could be located elsewhere of course).
Once you create this script, don’t forget to make it executable by doing
chmod +x ftpserver.
Although this works, our script should really be more compliant and let us stop and restart the server. I plan to address that soon!