Computer >> 컴퓨터 >  >> 체계 >> Linux

Python의 내장 HTTP 서버를 사용하여 파일 전송

Python의 내장 HTTP 서버를 사용하여 파일 전송

네트워크를 통해 파일을 전송해야 하는 경우가 자주 발생합니다. GNU/Linux 시스템은 이를 위한 여러 프로토콜과 도구를 지원하며, 그 중 일부는 다소 영구적인 파일 공유(예:SMB, AFP 및 NFS)용으로 설계되었으며 SCP(Secure Copy)와 같은 다른 것들은 빠른 수동 및 스크립트용으로 사용됩니다. 파일 전송. 그 중에는 World Wide Web이 의존하는 다용도의 유비쿼터스 프로토콜인 HTTP(HyperText Transfer Protocol)가 있습니다.

대부분의 Linux 배포판에 기본적으로 포함되어 있는 Python은 "SimpleHTTPServer" 및 "http.server" 모듈을 통해 간단한 HTTP 서버를 제공합니다. 전자는 Python 2 표준 라이브러리에 있고 후자는 Python 3에 포함되어 있습니다. 이러한 경량 HTTP 서버는 별도의 설치가 필요하지 않으며 단일 명령으로 즉시 시작할 수 있습니다.

파이썬 설치

시스템에 최소한 하나의 Python 버전이 포함되어 있을 가능성이 높지만 그렇지 않은 경우 기본 패키지 관리자를 사용하여 Python 3을 설치하십시오.

예를 들어 Debian 및 Ubuntu의 경우:

sudo apt update
sudo apt install -y python3

HTTP 서버 시작

보내는 기기에서 사용하는 IP 주소를 기록해 둡니다.

ip a s

Python의 내장 HTTP 서버를 사용하여 파일 전송

다음 명령을 사용하여 설치된 Python 버전을 찾으십시오.

python --version
python3 --version

같은 컴퓨터에서 작업 디렉터리를 전송 중인 파일이 포함된 디렉터리로 변경합니다. Python HTTP 서버가 실행되는 동안 현재 작업 디렉토리의 전체 내용에 네트워크(또는 보내는 컴퓨터에 공용 IP 주소가 있는 경우 인터넷)에 있는 모든 사람이 액세스할 수 있다는 사실에 유의하십시오.

cd /path/to/files/

예:

cd /home/user/Documents/

이제 HTTP 서버를 시작할 수 있습니다. Python 2.x의 경우 SimpleHTTPServer 모듈을 사용합니다.

python -m SimpleHTTPServer

또는 Python 3.x의 경우 http.server:

python3 -m http.server

두 변형 모두 기본적으로 포트 8000에서 수신 대기하지만 모듈 이름 뒤에 다른 포트 번호를 명시적으로 지정할 수 있습니다.

python -m SimpleHTTPServer [port]
python3 -m http.server [port]

참고: 1024 미만의 포트를 선택하는 경우 루트 권한이 필요합니다.

파일 다운로드

수신 컴퓨터에서 모든 HTTP 클라이언트를 사용하여 파일을 다운로드할 수 있습니다. 그래픽 환경을 사용하는 경우 명령줄 유틸리티보다 브라우저가 더 편리한 경우가 많습니다. https://IP_ADDRESS:8000(여기서 "IP_ADDRESS"는 보내는 컴퓨터의 IP 주소)으로 이동하고 원하는 파일을 클릭하여 다운로드합니다.

Python의 내장 HTTP 서버를 사용하여 파일 전송

또는 Wget 또는 cURL을 사용하여 파일을 가져올 수 있습니다. 이미 하나 또는 둘 다 설치되어 있어야 합니다. 둘 다 그렇지 않은 경우 Wget을 설치하는 것이 좋습니다. Wget이 더 사용자 친화적이고 전체 디렉토리 다운로드를 지원하기 때문입니다.

데비안 및 우분투:

sudo apt install wget

RHEL 및 CentOS 6/7:

sudo yum install wget

Fedora 및 RHEL/CentOS 8:

sudo dnf install wget

Wget 사용

Wget으로 단일 파일을 다운로드하려면 Wget을 호출한 다음 다운로드하려는 파일의 URL을 호출하기만 하면 됩니다.

wget https://IP_ADDRESS:8000/filename

Python의 내장 HTTP 서버를 사용하여 파일 전송

Wget을 사용하여 -r을 추가하여 전체 디렉토리를 재귀적으로 다운로드할 수도 있습니다. 명령줄 플래그입니다.

wget -r https://IP_ADDRESS:8000/

Python의 내장 HTTP 서버를 사용하여 파일 전송

cURL 사용

기본적으로 curl은 파일 내용을 터미널에 인쇄하려고 시도합니다. 따라서 대신 파일을 저장하려면 -o로 파일 이름을 지정하십시오. 플래그.

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

Python의 내장 HTTP 서버를 사용하여 파일 전송

결론

Python 표준 라이브러리의 HTTP 기능은 기본적이면서도 빠르고 편리한 파일 전송 방법을 제공하여 일부 시나리오에 적합합니다. 그러나 이것은 암호화나 인증이 없는 일반 HTTP이므로 민감한 파일이 노출되지 않도록 주의해야 합니다.