Computer >> 컴퓨터 >  >> 시스템 >> Linux

파이썬 내장 HTTP 서버로 손쉽게 파일 전송하는 방법

파이썬 내장 HTTP 서버로 손쉽게 파일 전송하는 방법

네트워크를 통해 파일을 전송해야 하는 상황은 생각보다 자주 찾아옵니다. GNU/Linux 시스템은 이를 위한 다양한 프로토콜과 도구를 지원하는데, SMB·AFP·NFS처럼 지속적인 파일 공유를 목적으로 하는 것도 있고, SCP(Secure Copy)처럼 빠른 수동 전송이나 스크립트 기반 전송에 적합한 것도 있습니다. 그중 하나가 바로 HTTP(HyperText Transfer Protocol)로, 월드 와이드 웹의 근간이 되는 범용적이고 보편적인 프로토콜입니다.

대부분의 리눅스 배포판에 기본 탑재된 파이썬(Python)은 "SimpleHTTPServer"와 "http.server" 모듈을 통해 간단한 HTTP 서버를 제공합니다. 전자는 파이썬 2 표준 라이브러리에, 후자는 파이썬 3에 포함되어 있습니다. 이 경량 HTTP 서버는 별도 설치가 필요 없으며, 단 한 줄의 명령어로 즉시 구동할 수 있다는 것이 가장 큰 장점입니다.

파이썬 설치하기

대부분의 시스템에는 최소 한 개 이상의 파이썬 버전이 설치되어 있지만, 혹시 없다면 배포판의 패키지 관리자로 파이썬 3를 설치하면 됩니다.

예를 들어 데비안(Debian)과 우분투(Ubuntu)에서는 다음과 같습니다.

sudo apt update
sudo apt install -y python3

HTTP 서버 시작하기

먼저 파일을 보내는 컴퓨터의 IP 주소를 확인합니다.

ip a s

파이썬 내장 HTTP 서버로 손쉽게 파일 전송하는 방법

다음 명령어로 설치된 파이썬 버전을 확인할 수 있습니다.

python --version
python3 --version

같은 머신에서 작업 디렉터리를 전송할 파일이 있는 위치로 변경합니다. 이때 주의할 점이 있습니다. 파이썬 HTTP 서버가 실행되는 동안에는 현재 작업 디렉터리의 모든 내용이 네트워크상의 누구에게나, 공인 IP를 사용하는 경우에는 인터넷상의 누구에게나 노출될 수 있다는 사실입니다.

cd /path/to/files/

예를 들면 다음과 같습니다.

cd /home/user/Documents/

이제 HTTP 서버를 시작할 차례입니다. 파이썬 2.x에서는 SimpleHTTPServer 모듈을 사용합니다.

python -m SimpleHTTPServer

파이썬 3.x에서는 http.server를 사용합니다.

python3 -m http.server

두 방식 모두 기본적으로 8000번 포트에서 대기하지만, 모듈 이름 뒤에 다른 포트 번호를 직접 지정할 수도 있습니다.

python -m SimpleHTTPServer [포트]
python3 -m http.server [포트]

참고: 1024 미만의 포트를 사용하려면 root 권한이 필요합니다.

파일 내려받기

파일을 받는 컴퓨터에서는 어떤 HTTP 클라이언트든 활용할 수 있습니다. 그래픽 환경이라면 명령줄 도구보다 브라우저가 더 편리한 경우가 많습니다. 브라우저 주소창에 https://IP_ADDRESS:8000을 입력하고(여기서 "IP_ADDRESS"는 파일을 보내는 컴퓨터의 IP 주소), 원하는 파일을 클릭해 다운로드하면 됩니다.

파이썬 내장 HTTP 서버로 손쉽게 파일 전송하는 방법

또는 Wget이나 cURL로 파일을 가져올 수도 있습니다. 대부분의 시스템에는 둘 중 하나 또는 둘 다 이미 설치되어 있을 것입니다. 만약 어느 것도 없다면 Wget 설치를 권장합니다. 사용법이 직관적이고 디렉터리 전체를 한 번에 받을 수 있기 때문입니다.

데비안 및 우분투:

sudo apt install wget

RHEL 및 CentOS 6/7:

sudo yum install wget

Fedora 및 RHEL/CentOS 8:

sudo dnf install wget

Wget 사용법

Wget으로 단일 파일을 내려받으려면 명령어 뒤에 해당 파일의 URL만 입력하면 됩니다.

wget https://IP_ADDRESS:8000/filename

파이썬 내장 HTTP 서버로 손쉽게 파일 전송하는 방법

-r 옵션을 추가하면 디렉터리 전체를 재귀적으로 다운로드할 수도 있습니다.

wget -r https://IP_ADDRESS:8000/

파이썬 내장 HTTP 서버로 손쉽게 파일 전송하는 방법

cURL 사용법

기본적으로 curl은 파일 내용을 터미널에 출력하려고 시도합니다. 따라서 파일로 저장하려면 -o 옵션으로 저장할 파일명을 반드시 지정해야 합니다.

curl https://IP_ADDRESS:8000/filename -o filename

파이썬 내장 HTTP 서버로 손쉽게 파일 전송하는 방법

마무리

파이썬 표준 라이브러리의 HTTP 기능은 기본적이면서도 빠르고 편리한 파일 전송 수단을 제공하므로, 일회성 전송 등 특정 상황에서 매우 유용합니다. 다만 이 방식은 암호화와 인증이 전혀 없는 일반 HTTP라는 점을 기억해야 합니다. 민감한 파일이 외부에 노출되지 않도록 항상 주의하세요.