Python의 한 줄 FTP 서버

Rohan Timalsina 2023년6월21일
Python의 한 줄 FTP 서버

FTP는 파일 전송 프로토콜의 약자입니다. 컴퓨터 네트워크를 통해 클라이언트와 서버 간에 파일을 전송할 수 있습니다.

Python 라이브러리에는 pyftpdlib 모듈이 포함되어 있어 Python으로 효율적이고 확장 가능한 FTP 서버를 작성할 수 있습니다. 이 자습서에서는 Python에서 한 줄짜리를 사용하여 FTP 서버를 만드는 방법을 알려줍니다.

pyftpdlib를 사용하여 Python에서 한 줄 FTP 서버 만들기

먼저 pyftpdlib 모듈을 설치해야 합니다.

pip install pyftpdlib

출력:

Successfully built pyftpdlib
Installing collected packages: pyftpdlib
Successfully installed pyftpdlib-1.5.6

그런 다음 터미널에서 pyftpdlib 명령을 실행할 수 있습니다. 예를 들어, 다음 명령은 현재 디렉토리로 FTP 서버를 시작합니다.

python -m pyftpdlib

출력:

[I 2022-09-20 21:36:36] concurrency model: async
[I 2022-09-20 21:36:36] masquerade (NAT) address: None
[I 2022-09-20 21:36:36] passive ports: None
[I 2022-09-20 21:36:36] >>> starting FTP server on 0.0.0.0:2121, pid=3492 <<<

다음으로 서버가 실행 중인지 확인합니다.

curl ftp://127.0.0.1:2121

다음과 같이 현재 디렉토리의 모든 내용을 나열합니다.

출력:

-rw-rw-rw-   1 owner    group        6817 May 20 06:55 -1.14-windows.xml
drwxrwxrwx   1 owner    group           0 Nov 13  2021 .Icecream Screen Recorder
drwxrwxrwx   1 owner    group        4096 Mar 28 02:51 .THypervBox
drwxrwxrwx   1 owner    group       12288 Sep 18 14:46 .VirtualBox
drwxrwxrwx   1 owner    group        4096 May 15 07:36 .android

기본 모드는 읽기 전용입니다. -w 옵션을 사용하여 쓰기 액세스를 활성화할 수 있습니다. -d 플래그를 사용하면 다른 디렉토리를 사용하여 서버에서 공유할 수 있습니다.

다음 예는 로그인한 사용자에게 쓰기 권한이 있는 C:\pc\test_folder 디렉토리를 제공합니다.

python -m pyftpdlib -w -d C:\pc\test_folder

출력:

[I 2022-09-22 19:55:47] concurrency model: async
[I 2022-09-22 19:55:47] masquerade (NAT) address: None
[I 2022-09-22 19:55:47] passive ports: None
[I 2022-09-22 19:55:47] >>> starting FTP server on 0.0.0.0:2121, pid=25560 <<<

실행 중인지 확인하려면.

curl ftp://127.0.0.1:2121

출력:

drwxrwxrwx   1 owner    group           0 Feb 23  2022 New folder
-rw-rw-rw-   1 owner    group           0 Feb 23  2022 books.txt
-rw-rw-rw-   1 owner    group          18 Jun 09 15:58 hello.txt

익명 로그인을 비활성화하려면 서버를 시작하기 전에 usernamepassword를 지정해야 합니다.

-u 옵션을 사용하면 사용자 이름을 설정할 수 있으며 -P 옵션은 FTP 서버에 로그인하기 위한 비밀번호를 설정하는 데 도움이 됩니다.

python -m pyftpdlib -w -d C:\pc\test_folder -u username -P password

출력:

[I 2022-09-23 00:16:12] concurrency model: async
[I 2022-09-23 00:16:12] masquerade (NAT) address: None
[I 2022-09-23 00:16:12] passive ports: None
[I 2022-09-23 00:16:12] >>> starting FTP server on 0.0.0.0:2121, pid=22732 <<<

이 명령을 실행하여 공유 디렉터리를 나열합니다.

curl --user username:password ftp://127.0.0.1:2121/

출력:

drwxrwxrwx   1 owner    group           0 Feb 23  2022 New folder
-rw-rw-rw-   1 owner    group           0 Feb 23  2022 books.txt
-rw-rw-rw-   1 owner    group          18 Jun 09 15:58 hello.txt

추가 명령 옵션을 보려면 help 명령을 실행하십시오.

python -m pyftpdlib --help
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

관련 문장 - Python Server