一行FTP服务器

9
很多时候我会使用这个命令,在当前目录下开启一个临时的HTTP服务器:
python3 -m http.server

现在我需要接收文件,有没有一行命令可以打开一个FTP服务器?
我只是在寻找一个命令行FTP服务器,没有配置文件,没有守护进程。
我尝试了Twisted,如Python中的一行FTP服务器,但用户没有发送文件的权限...

你能稍微澄清一下你的问题吗?你是只在寻找一个命令行FTP服务器还是其他东西? - kjakeb
我只是在寻找一个命令行FTP服务器。 - André Puel
5个回答

17
如果您正在寻找Python解决方案,请查看pyftpdlib。您可以使用pip进行安装:
pip install pyftpdlib

然后像这样运行它:

python -m pyftpdlib

默认情况下,此命令会在本地主机的2121端口运行一个匿名可写FTP服务器,将文件从当前目录提供(即从您启动的任何位置)。要登录,请使用anonymous作为用户名和密码。

显然,这非常不安全,所以您需要考虑到这一点 - 如果您想要更多的东西,比如玩具或其他开发工具等,请使用适当的FTP服务器,如其他人所提到的。


1
要以写访问权限启动服务器,请运行python -m pyftpdlib -w。请参阅 https://pythonhosted.org/pyftpdlib/faqs.html 中的常见问题解答。 - Tsvetomir Tsonev

3

这里有一个使用NodeJS (ftp-srv模块)的解决方案:

npx ftp-srv ftp://0.0.0.0:2121 --root .

这将在所有接口上监听TCP端口2121的FTP服务器启动,使用当前目录作为根目录(实际上这是默认设置,因此对于这种特殊情况可以省略--root .),并接受所有登录。(npx下载模块并使用提供的选项运行其主要脚本。)

您可能还想查看--pasv_url选项以启用被动模式。

有关更多详细信息,请参见https://www.npmjs.com/package/ftp-srv#cli

Options:
  --help             Show help                                         [boolean]
  --version          Show version number                               [boolean]
  --credentials, -c  Load user & pass from json file                    [string]
  --username         Blank for anonymous                  [string] [default: ""]
  --password         Password for given username                        [string]
  --root, -r         Default root directory for users                   [string]
  --read-only        Disable write actions such as upload, delete, etc
                                                      [boolean] [default: false]
  --pasv_url         URL to provide for passive connections             [string]
  --pasv_min         Starting point to use when creating passive connections
                                                        [number] [default: 1024]
  --pasv_max         Ending port to use when creating passive connections
                                                       [number] [default: 65535]

0

你也可以使用 twistd

$ virtualenv try-twisted
$ . try-twisted/bin/activate
(try-twisted) $ pip install twisted[tls]
(try-twisted) $ twistd -n ftp --root=/my/share/dir --password-file=/tmp/pass.dat

并连接到ftp://127.0.0.1:2121作为匿名用户

(要停用virtualenv,请运行:deactivate)


https://twistedmatrix.com/trac/


0

一个常用的命令行 ftp 服务器是 vsftpd。这也是 Ubuntu、CentOS、Fedora、NimbleX 和 RHEL Linux 上默认的 ftp 服务器。


你能举个例子说明如何使用 vsftpd 作为一行命令吗?在我的经验中,它需要通过一个(可能相当复杂的)配置文件进行配置,并作为系统服务/守护进程运行。 - jacobq

-1

Openssh有一个SFTP服务器,配置非常容易。

顺便提一下,普通FTP比HTTP更复杂。请小心使用 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接