有没有可能在Python中使用一行命令创建一个简单的ftp服务器?我想要一种快速临时的方法将文件传输到Linux计算机上,而不必安装ftp服务器。最好使用内置的Python库,以便无需安装任何额外的东西。
有没有可能在Python中使用一行命令创建一个简单的ftp服务器?我想要一种快速临时的方法将文件传输到Linux计算机上,而不必安装ftp服务器。最好使用内置的Python库,以便无需安装任何额外的东西。
以下是必要的Twisted示例:
twistd -n ftp
而且可能很有用:
twistd ftp --help
Usage: twistd [options] ftp [options].
WARNING: This FTP server is probably INSECURE do not use it.
Options:
-p, --port= set the port number [default: 2121]
-r, --root= define the root of the ftp-site. [default:
/usr/local/ftp]
--userAnonymous= Name of the anonymous user. [default: anonymous]
--password-file= username:password-style credentials database
--version
--help Display this help and exit.
pip install -U twisted
命令即可。这并没有在链接的网站上直接提到。 - Steve Barnes请查看 Giampaolo Rodola 的 pyftpdlib。它是 Python 中最好的 ftp 服务器之一。它被用在 Google 的 Chromium(他们的浏览器)和 Bazaar(版本控制系统)中。这是 Python 中对于 RFC-959(也称为 FTP 服务器实现规范)最完整的实现。
安装方法:
pip3 install pyftpdlib
从命令行:
python3 -m pyftpdlib
或者 'my_server.py':
#!/usr/bin/env python3
from pyftpdlib import servers
from pyftpdlib.handlers import FTPHandler
address = ("0.0.0.0", 21) # listen on every IP on my machine on port 21
server = servers.FTPServer(address, FTPHandler)
server.serve_forever()
如果您想查看更复杂的示例,请访问网站。
获取命令行选项列表:
python3 -m pyftpdlib --help
请注意,如果您想覆盖或使用标准FTP端口,则需要管理员权限(例如sudo)。
>>> from pyftpdlib import ftpserver
:pyftpdlib\ftpserver.py:54: DeprecationWarning: pyftpdlib.ftpserver模块已经过时
。 - Daniel Reispip3 install pyftpdlib
。 - Brian Bruggeman为什么不使用一行代码的HTTP服务器呢?
python -m SimpleHTTPServer 8000
本命令将在端口8000上通过HTTP提供当前工作目录的内容。
如果您使用Python 3,应改为编写以下命令:
python3 -m http.server 8000
请参考2.x版本的SimpleHTTPServer模块文档和3.x版本的http.server模块文档。
另外,无论哪种情况下,端口参数都是可选的。
nc -l 12345 | tar -xf -
这将在端口12345上监听,等待数据。
第二步,在发送方侧:
tar -cf - ALL_FILES_YOU_WANT_TO_SEND ... | nc $RECEIVER_IP 12345
您还可以将pv
放在中间以监视传输进度:
tar -cf - ALL_FILES_YOU_WANT_TO_SEND ...| pv | nc $RECEIVER_IP 12345
传输完成后,nc
的两端将自动退出,任务完成。
tar
和nc
的Unix机器。如果是Windows呢? - jlh对于pyftpdlib的用户。我在pyftpdlib网站上找到了这个。它可以创建具有写访问权限的匿名ftp,因此请小心使用。更多功能在保障安全性方面是可用的,所以请自行查看:
sudo pip3 install pyftpdlib
python3 -m pyftpdlib -w
## updated for python3 Feb14:2020
对于那些尝试使用上面被弃用的方法的人可能会有帮助。
sudo python -m pyftpdlib.ftpserver
sudo
。 - balkipip3 install pyftpdlib
,以及python3 -m pyftpdlib -w
。对我来说非常好用。 - Ron Kleinapt-get install python3-pip
pip3 install pyftpdlib
python3 -m pyftpdlib -p 21 -w --user=username --password=password
-w = write permission
-p = desired port
--user = give your username
--password = give your password
安装:
pip install twisted
那么这段代码:
from twisted.protocols.ftp import FTPFactory, FTPRealm
from twisted.cred.portal import Portal
from twisted.cred.checkers import AllowAnonymousAccess, FilePasswordDB
from twisted.internet import reactor
reactor.listenTCP(21, FTPFactory(Portal(FTPRealm('./'), [AllowAnonymousAccess()])))
reactor.run()
更深入的了解:
更简单的解决方案是使用pyftpd库。该库允许您在一行中启动Python FTP服务器。但它不是默认安装的,我们可以使用简单的apt命令进行安装。
apt-get install python-pyftpdlib
python -m pyftpdlib -p 21
我不知道有没有一行代码的FTP服务器,但如果你知道的话
python -m SimpleHTTPServer
它将在0.0.0.0:8000上运行一个HTTP服务器,从当前目录中提供文件。如果您正在寻找一种快速使用Web浏览器从Linux框中获取文件的方法,那么您无法击败它。
-o Ciphers=arcfour
,即sshfs $REMOTEHOST:$DIRECTORY $MOUNTPOINT -o Ciphers=arcfour
,并在您的文件系统中复制、移动、重命名和管理文件。sshfs也适用于Mac OSX。 - erik