4 พฤษภาคม 2558

Published พฤษภาคม 04, 2558 by with 0 comment

สร้าง FTP server บนภาษา Python ด้วย pyftpdlib

สวัสดีผู้อ่านทุกท่านครับ ความสามารถอย่างหนึ่งของภาษา Python คือ สามารถทำเป็น server ได้ เป็นภาษาที่เรียนรู้ได้ง่ายและมีประสิทธิภาพไม่แพ้ภาษาสคริปอื่น ๆ บนโลกนี้ จึงมีนักพัฒนาได้พัฒนาโปรแกรมต่าง ๆ ด้วยภาษา Python จำนวนมากในต่างประเทศ บทความนี้ผมจะพาผู้อ่านไปปสร้าง FTP server บนภาษา Python ด้วย pyftpdlib กันครับ


การทำ FTP server ผู้อ่านคงนึกไปถึงการตั้ง server แล้วลงไลบรารีต่าง ๆ และตั้งค่า port user ต่าง ๆ และยุ่งยาก หากเราต้องการสร้าง FTP server จำลองในเครื่องเราเองหรือเครื่องที่เชื่อมต่อผ่านอินเทอร์เน็ต ผมจะขอแนะนำโมดูล pyftpdlib  สร้าง FTP server บนภาษา Python

โมดูล pyftpdlib เป็นโมดูลสำหรับใช้สร้าง FTP server บนภาษา Python เข้ากันได้กับมาตรฐาน RFC-959 ครับ

  • มีขนาดเล็ก เร็ว มีประสิทธิภาพไม่ต่างกันกับ proftpd

  • สนับสนุน FTPS (RFC-4217), IPv6 (RFC-2428), Unicode file names (RFC-2640),MLSD/MLST commands (RFC-3659).

  • รองรับทั้ง Python 2 และ Python 3

  • ใช้งานได้ทั้ง UNIX และ Windows

  • ใช้ MIT license

สามารถติดตั้งได้โดยใช้คำสั่ง pip :
pip install pyftpdlib

ตัวอย่างการสร้าง ftp server


from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

authorizer = DummyAuthorizer()
authorizer.add_user("user", "12345", "/home/giampaolo",perm="elradfmw") # สร้าง user ชื่อ user รหัส 12345 ที่ตั้ง ftp คือ /home/giampaolo
authorizer.add_anonymous("/home/nobody") # สร้างสิทธิ์ให้เข้าถึงโฟลเลอร์ /home/nobody ให้ user คนทั่วไป

handler = FTPHandler
handler.authorizer = authorizer

server = FTPServer(("127.0.0.1", 21), handler) # กำหนดค่า Server คือ 127.0.0.1 port 21
server.serve_forever() # ทำงาน


รันแล้วเข้าไปที่ ftp://127.0.0.1:21

โมดูลนี้แม้แต่ Google ยังใช้ใน Google Chrome ครับ จะเห็นได้ว่า ภาษา Python มีการนำไปใช้ในโปรแกรมและบริการต่าง ๆ ที่ผมและผู้อ่านอาจรู้และไม่รู้อีกมาก นำไปใช้งานได้หลากหลายทางกว่าภาษาสคริปหลาย ๆ ภาษาครับ

อ่านเอกสารการใช้งานโมดูล pyftpdlib ได้ที่ http://pythonhosted.org/pyftpdlib/tutorial.html
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)