Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

การถ่ายโอนไฟล์ด้วย Built-in HTTP Server ของ Python

ความจำเป็นในการถ่ายโอนไฟล์ผ่านเครือข่ายเป็นสิ่งที่เกิดขึ้นบ่อย ระบบ GNU/Linux รองรับโปรโตคอลและเครื่องมือหลายอย่างสำหรับการทำเช่นนั้น บางอย่างถูกออกแบบสำหรับการแชร์ไฟล์ที่ค่อนข้างถาวร (เช่น SMB, AFP และ NFS) ในขณะที่บางอย่าง เช่น Secure Copy (SCP) ใช้สำหรับการถ่ายโอนไฟล์ด้วยตนเองและสคริปต์ที่รวดเร็ว ระหว่างนั้นคือ HyperText Transfer Protocol (HTTP) โปรโตคอลที่หลากหลายและทุกที่ซึ่ง World Wide Web พึ่งพา

Python ซึ่งรวมอยู่ใน Linux Distributions ส่วนใหญ่โดยค่าเริ่มต้น จัดเตรียม HTTP Servers เรียบง่ายผ่านโมดูล "SimpleHTTPServer" และ "http.server" โมดูลแรกพบใน Python 2 Standard Library ในขณะที่โมดูลที่สองรวมอยู่ใน Python 3 HTTP Servers เบาเหล่านี้ไม่ต้องการการติดตั้งแยกต่างหาก และสามารถเริ่มต้นได้ทันทีด้วยคำสั่งเดียว

การติดตั้ง Python

ระบบของคุณน่าจะรวม Python อย่างน้อยหนึ่งเวอร์ชัน แต่ถ้าไม่ใช่ ให้ติดตั้ง Python 3 โดยใช้ Native Package Manager ของคุณ

ตัวอย่างเช่น บน Debian และ Ubuntu:

sudo apt update sudo apt install -y python3

การเริ่มต้น HTTP Server

จดบันทึกที่อยู่ IP ที่ใช้โดยเครื่องส่ง

ip a s

การถ่ายโอนไฟล์ด้วย Built-in HTTP Server ของ Python

ค้นหาว่า Python เวอร์ชันไหนติดตั้งอยู่ด้วยคำสั่งต่อไปนี้:

python --version python3 --version

บนเครื่องเดียวกัน เปลี่ยน Working Directory ไปยังไดเรกทอรีที่มีไฟล์ที่คุณกำลังถ่ายโอน โปรดระวังว่ารวมทั้งเนื้อหาทั้งหมดของ Working Directory ปัจจุบันของคุณอาจเข้าถึงได้โดยใครก็ตามบนเครือข่ายของคุณ (หรืออินเทอร์เน็ต หากเครื่องส่งมี Public IP Address) ขณะที่ Python HTTP Server กำลังทำงาน

cd /path/to/files/

ตัวอย่างเช่น:

cd /home/user/Documents/

ตอนนี้คุณสามารถเริ่ม HTTP Server ได้ สำหรับ Python 2.x ใช้โมดูล SimpleHTTPServer:

python -m SimpleHTTPServer

หรือ http.server ในกรณีของ Python 3.x:

python3 -m http.server

ทั้งสองรูปแบบฟังที่ Port 8000 โดยค่าเริ่มต้น แม้คุณสามารถระบุหมายเลข Port ที่แตกต่างกันได้อย่างชัดเจนหลังชื่อโมดูล

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

หมายเหตุ: ต้องการ Root Privileges หากคุณเลือก Port ต่ำกว่า 1024

การดาวน์โหลดไฟล์ของคุณ

บนเครื่องรับ คุณสามารถใช้ HTTP Client ใดๆ เพื่อดาวน์โหลดไฟล์ของคุณ หากคุณใช้ Graphical Environment Browser มักสะดวกกว่า Command Line Utilities เพียงแค่ Browse ไปที่ https://IP_ADDRESS:8000 โดยที่ "IP_ADDRESS" คือที่อยู่ IP ของคอมพิวเตอร์ส่ง และคลิกที่ไฟล์ที่ต้องการเพื่อดาวน์โหลด

การถ่ายโอนไฟล์ด้วย Built-in HTTP Server ของ Python

ทางเลือกอื่น คุณสามารถใช้ Wget หรือ cURL เพื่อดึงไฟล์ของคุณ คุณควรจะมีหนึ่งหรือทั้งสองตัวติดตั้งอยู่แล้ว หากไม่มีทั้งคู่ เราแนะนำให้ติดตั้ง Wget เนื่องจากมัน User-friendly กว่าและรองรับการดาวน์โหลดทั้งโฟลเดอร์

สำหรับ Debian และ Ubuntu:

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

การถ่ายโอนไฟล์ด้วย Built-in HTTP Server ของ Python

คุณยังสามารถใช้ Wget เพื่อดาวน์โหลดทั้งโฟลเดอร์แบบ Recursive โดยเพิ่ม Flag -r บรรทัดคำสั่ง

wget -r https://IP_ADDRESS:8000/

การถ่ายโอนไฟล์ด้วย Built-in HTTP Server ของ Python

การใช้งาน cURL

โดยค่าเริ่มต้น curl พยายามพิมพ์เนื้อหาไฟล์ไปยังเทอร์มินัลของคุณ ดังนั้นเพื่อบันทึกไฟล์แทน ให้ระบุชื่อไฟล์ด้วย Flag -o

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

การถ่ายโอนไฟล์ด้วย Built-in HTTP Server ของ Python

สรุป

ฟังก์ชัน HTTP ใน Standard Library ของ Python จัดเตรียมวิธีการถ่ายโอนไฟล์ที่พื้นฐาน แต่รวดเร็วและสะดวก เหมาะสำหรับบางสถานการณ์ แต่โปรดจำไว้ว่า เนื่องจากนี่คือ Plain HTTP ที่ไม่มีการเข้ารหัสหรือการตรวจสอบสิทธิ์ คุณควรระวังที่จะไม่เปิดเผยไฟล์ที่ละเอียดอ่อน