programing

python의 한 줄 ftp 서버

jooyons 2023. 7. 29. 08:25
반응형

python의 한 줄 ftp 서버

python에서 간단한 ftp 서버를 할 수 있는 한 줄 명령어가 가능합니까?ftp 서버를 설치하지 않고도 리눅스 박스에 파일을 빠르고 임시로 전송할 수 있는 방법으로 이 작업을 수행할 수 있으면 좋겠습니다.추가 설치가 필요 없도록 기본 제공 파이썬 라이브러리를 사용하는 방법이 좋습니다.

의무적으로 꼬인 예:

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.

Giampaolo Rodola의 pyftpdlib를 확인하십시오.파이썬을 위한 최고의 FTP 서버 중 하나입니다.그것은 구글의 크롬(브라우저)과 바자(버전 제어 시스템)에 사용됩니다.RFC-959(일명: FTP 서버 구현 사양)용 Python에서 가장 완벽한 구현입니다.

설치 방법:

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)이 필요합니다.

대신에 줄짜리 HTTP 서버를 사용하는 게 어때요?

python -m SimpleHTTPServer 8000

포트 8000의 HTTP를 통해 현재 작업 디렉터리의 내용을 제공합니다.

Python 3을 사용하는 경우, 대신 글을 써야 합니다.

python3 -m http.server 8000

단순성 보기2.x의 경우 HTTPS 서버 모듈 문서, 3.x의 경우 http.server 문서입니다.

참고로 두 경우 모두 포트 매개 변수는 선택 사항입니다.

위의 답변은 모두 "one liner python ftpd" 목표를 달성하기 위해 Python 배포판에 일부 타사 라이브러리가 있을 것이라고 가정했지만, @zio가 묻는 것은 그렇지 않습니다.또한, 단순함HTTPS 서버는 파일을 다운로드하기 위한 웹 브라우저를 포함합니다. 충분히 빠르지 않습니다.

파이썬은 혼자서는 ftpd를 할 수 없지만, 넷캣을 사용할 수 있습니다.nc:

nc기본적으로 UNIX와 유사한 시스템(심지어 내장된 시스템)의 내장 도구이므로 "파일을 빠르고 임시적으로 전송하는 방법"에 적합합니다.

1단계, 수신기 측에서 다음을 실행합니다.

nc -l 12345 | tar -xf -

포트 12345에서 수신되며 데이터를 기다립니다.

2단계(발신자 측):

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자동으로 종료되고 작업이 완료됩니다.

pyftpdlib 사용자용.저는 이것을 pyftpdlib 웹사이트에서 찾았습니다.이렇게 하면 파일 시스템에 대한 쓰기 액세스 권한을 가진 익명 FTP가 생성되므로 주의하여 사용하십시오.더 나은 보안을 위해 후드 아래에 더 많은 기능을 사용할 수 있습니다. 따라서 다음을 확인하십시오.

sudo pip3 install pyftpdlib

python3 -m pyftpdlib -w  

## updated for python3 Feb14:2020

위에서 더 이상 사용하지 않는 방법을 사용하려는 사용자에게 유용할 수 있습니다.

sudo python -m pyftpdlib.sudoserver

apt-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()

자세히 알아보기:

http://twistedmatrix.com/documents/current/core/examples/

더 간단한 해결책은 사용자 pyftpd 라이브러리입니다.이 라이브러리를 사용하여 Python FTP 서버를 한 줄로 회전할 수 있습니다.기본적으로 설치되지는 않지만 간단한 apt 명령을 사용하여 설치할 수 있습니다.

apt-get install python-pyftpdlib

이제 당신이 서비스하고 싶은 디렉터리에서 피소드 모듈을 실행하세요.

python -m pyftpdlib -p 21 

나는 한 줄 FTP 서버에 대해 모르지만, 만약 당신이 알고 있다면.

python -m SimpleHTTPServer

0.0.0:8000에서 HTTP 서버를 실행하여 현재 디렉터리의 파일을 제공합니다.웹 브라우저를 사용하여 리눅스 박스에서 파일을 빠르게 제거하는 방법을 찾고 있다면 이를 능가할 수 없습니다.

언급URL : https://stackoverflow.com/questions/4994638/one-line-ftp-server-in-python

반응형