icesuntisuk

View on GitHub

สร้าง HTTP Server สำหรับแชร์ไฟล์อย่างง่ายด้วย Python

บนภาษา Python มี Library สำหรับแชร์ไฟล์ผ่านโปรโตคอล HTTP อย่างง่ายแถมมาให้กับผู้พัฒนาได้ใช้ สำหรับการถ่ายโอนไฟล์ระหว่างเครื่องหรือระหว่างระบบได้ หรือในบางครั้งเราต้องการดึงข้อมูล ผ่านโปรแกรม curl หรือ wget ก็มักจะต้องมานั่งคิดว่ามีวิธีใดบ้างสำหรับดึงข้อมูลในรูปแบบดังกล่าว ซึ่งผู้ดูแลระบบหรือผู้พัฒนาสามารถตั้ง HTTP Server ชั่วคราวขึ้นมาได้ด้วยโปรแกรมภาษา Python ชื่อ SimpleHTTPServer โดยใช้คำสั่งง่ายๆเพียงบรรทัดเดียวผ่าน Terminal หรือ Commandline อีกทั้งในบางครั้งการโหลดไฟล์จาก Server ภายนอก อาจก่อนให้เกิดความเสี่ยงจากไฟล์ที่ไม่น่าเชื่อถือ ฉะนั้นหากเรามีไฟล์ที่เชื่อถือได้ การเปิดโหลดจาก HTTP Server ภายในจะช่วยลดความเสี่ยงต่อการถูกฝั่ง Payload ภายในไฟล์ได้

# For Python 2
python -m SimpleHTTPServer
# For Python 3
python -m http.server 

หน้าจอหลังจากที่เราพิมพ์ Command ตามด้านบน

โดยเราสามารถเข้าถึงได้จากหมายเลข IP:8000 ของเครื่องเราเอง ในที่นี้จะเป็น http://127.0.0.1:8000

จะเห็นได้ว่าเราสามารถ Download ไฟล์ต่างๆ ที่อยู่บน Directory ที่เรารัน Command นี้ไป ซึ่งจะสามารถเข้าถึงได้ผ่านทาง Browser ด้วย Protocol http นั่นเอง ทั้งนี้เราสามารถใช้คำสั่งยอดนิยมสำหรับการดาวโหลดไฟล์ที่ต้องการผ่านเครื่องมือเช่น wget หรือ curl ได้อย่างง่ายดาย

wget http://<ip>:8000/filename
curl http://<ip>:8000/filename

ทั้นนี้เราสามารถ Custom Port ที่ต้องการได้ โดยต่อท้ายคำสั่งด้วยหมายเลข Port ที่เราต้องการ

python -m http.server 80 

ปล. ในการเปิดใช้งานนั้นจะต้อง Allow port ดังกล่าวบน Firewall ของเครื่องด้วย ยกตัวอย่างเช่น

firewall-cmd --add-port=8000/tcp

Powered By : Icesuntisuk ๖ ม.ค.๖๔