Computer >> Máy Tính >  >> Hệ thống >> Linux

Truyền tệp bằng máy chủ HTTP tích hợp của Python

Truyền tệp bằng máy chủ HTTP tích hợp của Python

Nhu cầu truyền tệp qua mạng là nhu cầu thường xuyên phát sinh. Hệ thống GNU / Linux hỗ trợ nhiều giao thức và công cụ để làm như vậy, một số trong số đó được thiết kế để chia sẻ tệp thường xuyên (chẳng hạn như SMB, AFP và NFS), trong khi những giao thức khác như Bản sao bảo mật (SCP) được sử dụng để nhanh chóng thủ công và theo tập lệnh chuyển tập tin. Trong số này có Giao thức truyền siêu văn bản (HTTP), giao thức đa năng và phổ biến mà World Wide Web dựa vào.

Python, được bao gồm theo mặc định trong hầu hết các bản phân phối Linux, cung cấp các máy chủ HTTP đơn giản thông qua các mô-đun “SimpleHTTPServer” và “http.server”. Cái trước được tìm thấy trong Thư viện chuẩn Python 2, trong khi cái sau được bao gồm trong Python 3. Các máy chủ HTTP nhẹ này không yêu cầu cài đặt riêng biệt và có thể được khởi động ngay lập tức bằng một lệnh duy nhất.

Cài đặt Python

Hệ thống của bạn rất có thể bao gồm ít nhất một phiên bản Python, nhưng nếu không phải vậy, hãy cài đặt Python 3 bằng trình quản lý gói gốc của bạn.

Ví dụ:trên Debian và Ubuntu:

sudo apt update
sudo apt install -y python3

Khởi động Máy chủ HTTP

Ghi lại địa chỉ IP được sử dụng bởi máy gửi.

ip a s

Truyền tệp bằng máy chủ HTTP tích hợp của Python

Tìm phiên bản Python nào được cài đặt bằng các lệnh sau:

python --version
python3 --version

Trên cùng một máy, hãy thay đổi thư mục làm việc của bạn thành thư mục chứa các tệp bạn đang chuyển. Hãy lưu ý rằng toàn bộ nội dung của thư mục làm việc hiện tại của bạn có thể truy cập được đối với bất kỳ ai trong mạng của bạn (hoặc Internet nếu máy gửi có địa chỉ IP công cộng), trong khi máy chủ Python HTTP đang chạy.

cd /path/to/files/

Ví dụ:

cd /home/user/Documents/

Bây giờ bạn có thể khởi động máy chủ HTTP. Đối với Python 2.x, hãy sử dụng mô-đun SimpleHTTPServer:

python -m SimpleHTTPServer

Hoặc http.server trong trường hợp của Python 3.x:

python3 -m http.server

Cả hai biến thể đều lắng nghe trên cổng 8000 theo mặc định, mặc dù bạn có thể chỉ định rõ ràng một số cổng khác sau tên mô-đun.

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

Lưu ý: đặc quyền root là bắt buộc nếu bạn chọn một cổng dưới 1024.

Tải xuống tệp của bạn

Trên máy nhận, bạn có thể sử dụng bất kỳ ứng dụng khách HTTP nào để tải xuống tệp của mình. Nếu bạn đang sử dụng môi trường đồ họa, trình duyệt thường thuận tiện hơn các tiện ích dòng lệnh. Chỉ cần duyệt đến https:// IP_ADDRESS:8000, trong đó “IP_ADDRESS” là địa chỉ IP của máy tính gửi và nhấp vào các tệp mong muốn để tải chúng xuống.

Truyền tệp bằng máy chủ HTTP tích hợp của Python

Ngoài ra, bạn có thể sử dụng Wget hoặc cURL để tìm nạp tệp của mình. Bạn nên cài đặt một hoặc cả hai. Nếu cả hai đều không, chúng tôi khuyên bạn nên cài đặt Wget, vì nó thân thiện với người dùng hơn và hỗ trợ tải xuống toàn bộ thư mục.

Đối với Debian và Ubuntu:

sudo apt install wget

Đối với RHEL và CentOS 6/7:

sudo yum install wget

Đối với Fedora và RHEL / CentOS 8:

sudo dnf install wget

Sử dụng Wget

Để tải xuống một tệp duy nhất với Wget, chỉ cần gọi Wget theo sau là URL của tệp bạn muốn tải xuống.

wget https://IP_ADDRESS:8000/filename

Truyền tệp bằng máy chủ HTTP tích hợp của Python

Bạn cũng có thể sử dụng Wget để tải xuống đệ quy toàn bộ thư mục bằng cách thêm -r cờ dòng lệnh.

wget -r https://IP_ADDRESS:8000/

Truyền tệp bằng máy chủ HTTP tích hợp của Python

Sử dụng cURL

Theo mặc định, curl cố gắng in nội dung tệp vào thiết bị đầu cuối của bạn. Vì vậy, để lưu tệp thay vào đó, hãy chỉ định tên tệp bằng -o cờ.

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

Truyền tệp bằng máy chủ HTTP tích hợp của Python

Kết luận

Chức năng HTTP trong thư viện tiêu chuẩn của Python cung cấp một cách chuyển tệp cơ bản nhưng nhanh chóng và thuận tiện, hoàn hảo cho một số trường hợp. Nhưng hãy nhớ rằng vì đây là HTTP thuần túy không có mã hóa cũng như xác thực, bạn nên cẩn thận để không để lộ các tệp nhạy cảm.