Skip to the content.

How to download file from SFTP server in python

Credit : Image Source

Date 14-01-2021
Author Thanakorn P.

การรับ-ส่ง ข้อมูล ระหว่าง Client และ Server ให้มีความปลอดภัยมีอยู่ด้วยกันหลายวิธี หนึ่งในวิธีการที่ได้รับความนิยมก็คือการใช้งาน SFTP (SSH File Transfer Protocol) โดยวิธีการนี้จะทำการ รับ-ส่ง ข้อมูลกันผ่าน SSH tunnel ที่มีการเข้ารหัสข้อมูล ทำให้การดักจับข้อมูล ระหว่างที่ทำการ รับ-ส่ง ข้อมูล เป็นไปได้ยากขึ้น จึงทำให้มีความปลอดภัยมากขึ้นนั่นเอง

วันนี้จะมาเขียนโปรแกรมเพื่อทำการ download file จาก SFTP server กัน โดยใช้ library ของ python ที่ชื่อว่า pysftp โดยสิ่งแรกที่ต้องทำเลยคือการ install package library

Install pysftp

pip install pysftp

pysftp จะมีตัวอย่างการใช้งานตามตัวอย่างนี้

Sample Code

import pysftp

with pysftp.Connection([hostname or ip], username=[user of SFTP Server], password=[password of SFTP Server]]) as sftp:
    with sftp.cd([Directory of file]):
        sftp.get([File name])

โดยเมื่อแทนที่ต่างๆ ใน Code แล้ว จะได้ Code ที่มีหน้าตาดังนี้

Source Code

import pysftp

with pysftp.Connection('192.168.130.130', username='root', password='password') as sftp:
    with sftp.cd('/download'):
        sftp.get('test.txt')

และผมได้ทำการจัดเตรียม SFTP ที่มี setup ตามที่ระบุใน Code ไว้เรียบร้อยตามนี้

SFTP Server

และเมื่อทำการทดสอบ Run program ของเรา ก็จะพบว่ามี file ที่ชื่อว่า test.txt เข้ามาอยู่ใน folder ที่ใช้เก็บ sourcecode ของเราเป็นที่เรียบร้อย

Result

จะเห็นได้ว่า การ download file จาก sftp server ด้วย library pysftp ใช้ code เพียงไม่กี่บรรทัด ก็สามารถ download file ให้มีความปลอดภัยได้แล้ว

library pysftp ยังมีความสามารถอีกมายมาย เพื่อนๆ ลองไปศึกษาดูได้จาก link reference ด้านล่างครับ…

ref : https://pysftp.readthedocs.io/en/release_0.2.9/index.html