pyftpdlib을 사용하여 FTP 서버를 한 두 세만큼 쉽게 사용할 수 있습니다 .
- pip로 설치
pip install --user pyftpdlib
- 으로 실행 하고 쓰기 권한을 원하면
python -m pyftpdlib
추가 하십시오 -w
.
- 세 단계는 없습니다 :)
이제 홈 디렉토리를 익명으로 공유하기 위해 로그인 할 수있는 ftp 서버가 있습니다. 이것은 모듈의 테스트를 의미하는 것이지만 주석에서 말하는 것을 수행합니다.
이 명령은
python -m pyftpdlib --directory=FTP --port=2121 --write
루트 권한없이 포트 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를 작성했다.
여기에서 다운로드하십시오 (개정판 6으로 업데이트 됨)
길이가 3999 줄인 것이 유감이지만, 원래의 모든 작업을 수행합니다. 그리고 나는 모든 것을 하나의 파일로 유지하고 싶었습니다. 매개 변수없이 시작하면 (즉, 실행 가능하게하고 두 번 클릭하거나 실행기를 만듭니다 ) 서버를 구성하기 위해 약간의 GUI를 시작합니다. 여전히 파이썬 모듈로 가져 오거나 위의 명령 줄 fu를 사용할 수 있습니다.
알려진 문제 :
편집 : API pyftpdlib
및 ftpserver.py
변경 이후 (및 우분투 pastebin 링크가 사라짐); 위의 게시물 대부분은 더 이상 작동하지 않습니다. 의 (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 <<<
...