使用pyftpdlib可以使FTP服务器变得像一二三一样简单:
- 用pip安装
pip install --user pyftpdlib
- 使用
python -m pyftpdlib
,-w
如果您也想要写访问权限,请添加。
- 没有第三步:)
现在您有了一个ftp服务器,您可以登录该服务器以匿名方式共享您的主目录。这更多的是作为对模块的测试,但它确实做到了如上所说。
该命令:
python -m pyftpdlib --directory=FTP --port=2121 --write
将在没有root特权的情况下在端口2121上提供服务,并向匿名用户授予写访问权限。它还将使用FTP
当前工作目录中的目录,而不是您的主目录。键入python ftpserver.py --help
以获取有关所有选项的信息。
- 登录到
anonymous@localhost:2121/
请注意,该软件是根据MIT许可证的条款发布的,这意味着您基本上可以随心所欲地使用它。阅读许可证文本,只有几行,并且知道您的权利。
现在,该脚本不支持用户名和密码作为其独立功能的一部分(出于安全考虑,我想)。
因此,我添加了该功能:
除了我提到的所有选项之外,您现在还拥有命令行参数
--username=USERNAME
和--password=PASSWORD
:
python ftpserver.py --port=2121 --username=ftpuser --password=3r2u389r2u333j
再次使用--help
来查看所有内容。
这应该尽可能简单。
我也为此写了一些GUI:
编辑:既然的API pyftpdlib
和ftpserver.py
修改(ubuntu的引擎收录的链接都消失了); 以上大部分内容已无法使用。对于(2014)版本pyftpdlib
,请使用此脚本(ftpserver-cli.py
)来实现与上述相同的效果:
#!/usr/bin/env python
# ftpserver-cli.py
import sys
sys.path.append("/path/to/pyftpdlib-svn") # enter your proper path here
import argparse
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
def processCmdLineOptions():
global optparser
optparser = argparse.ArgumentParser(description="ftpserver-cli",
formatter_class=argparse.RawDescriptionHelpFormatter)
optparser.add_argument('-u', '--username', action='store', type=str,
default="user", help="username")
optparser.add_argument('-p', '--password', action='store', type=str,
default="12345", help="password")
optparser.add_argument('-t', '--port', action='store', type=int,
default="21", help="port")
optparser.add_argument('-d', '--directory', action='store', type=str,
default="/home/stefano/Projekte/", help="port")
optargs = optparser.parse_args(sys.argv[1:]) #(sys.argv)
return optargs
optargs = processCmdLineOptions()
print("Using: user: %s pass: %s port: %d dir: %s" % (optargs.username, optargs.password, optargs.port, optargs.directory))
authorizer = DummyAuthorizer()
authorizer.add_user(optargs.username, optargs.password, optargs.directory, perm="elradfmw")
#authorizer.add_anonymous("/home/nobody")
handler = FTPHandler
handler.authorizer = authorizer
server = FTPServer(("127.0.0.1", optargs.port), handler)
server.serve_forever()
致电:
$ sudo python ftpserver-cli.py --directory=/tmp/srvtest
Using: user: user pass: 12345 port: 21 dir: /tmp/srvtest
[I 14-03-02 21:40:57] >>> starting FTP server on 127.0.0.1:21, pid=19286 <<<
...