Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

การถ่ายโอนไฟล์โดยใช้เซิร์ฟเวอร์ HTTP ในตัวของ Python

การถ่ายโอนไฟล์โดยใช้เซิร์ฟเวอร์ HTTP ในตัวของ Python

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

Python ซึ่งรวมอยู่โดยค่าเริ่มต้นในลีนุกซ์ส่วนใหญ่ มีเซิร์ฟเวอร์ HTTP อย่างง่ายผ่านโมดูล “SimpleHTTPServer” และ “http.server” อดีตมีอยู่ในไลบรารีมาตรฐาน Python 2 ในขณะที่เซิร์ฟเวอร์หลังรวมอยู่ใน Python 3 เซิร์ฟเวอร์ HTTP น้ำหนักเบาเหล่านี้ไม่จำเป็นต้องติดตั้งแยกต่างหาก และสามารถเริ่มต้นได้ทันทีด้วยคำสั่งเดียว

การติดตั้ง Python

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

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

sudo apt update
sudo apt install -y python3

การเริ่มต้นเซิร์ฟเวอร์ HTTP

จดที่อยู่ IP ที่เครื่องส่งใช้

ip a s

การถ่ายโอนไฟล์โดยใช้เซิร์ฟเวอร์ HTTP ในตัวของ Python

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

python --version
python3 --version

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

cd /path/to/files/

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

cd /home/user/Documents/

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

python -m SimpleHTTPServer

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

python3 -m http.server

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

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

หมายเหตุ: ต้องมีสิทธิ์ของรูทหากคุณเลือกพอร์ตที่ต่ำกว่า 1024

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

บนเครื่องรับ คุณสามารถใช้ไคลเอนต์ HTTP ใดก็ได้เพื่อดาวน์โหลดไฟล์ของคุณ หากคุณกำลังใช้สภาพแวดล้อมแบบกราฟิก เบราว์เซอร์มักจะสะดวกกว่ายูทิลิตี้บรรทัดคำสั่ง เพียงเรียกดู https://IP_ADDRESS:8000 โดยที่ “IP_ADDRESS” คือที่อยู่ IP ของคอมพิวเตอร์ที่ส่ง จากนั้นคลิกไฟล์ที่ต้องการเพื่อดาวน์โหลดไฟล์

การถ่ายโอนไฟล์โดยใช้เซิร์ฟเวอร์ HTTP ในตัวของ Python

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

สำหรับ 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

การถ่ายโอนไฟล์โดยใช้เซิร์ฟเวอร์ HTTP ในตัวของ Python

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

wget -r https://IP_ADDRESS:8000/

การถ่ายโอนไฟล์โดยใช้เซิร์ฟเวอร์ HTTP ในตัวของ Python

การใช้ cURL

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

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

การถ่ายโอนไฟล์โดยใช้เซิร์ฟเวอร์ HTTP ในตัวของ Python

บทสรุป

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