Python – 自動化複製檔案!?使用PySftp連線SFTP Server!

最近遇到一個狀況 , 網站要部屬的位址有十幾台 , 每一台都要上傳一份備份檔案

然而學長們一個一個上傳 , 不知道要弄多久 , 想說是否可讓程式自己跑 , 果不其然一查真的有

果然還是自動化才是王道

這次選擇使用Python + PySftp來達成目的,這邊記錄一下PySftp的基礎使用方式

安裝 PySftp

pip install pysftp

Pysftp 列出目錄檔案

import pysftp

sHostName = 'localhost'
sUserName = 'sftp'
sPassWord = 'sftp'

cnopts = pysftp.CnOpts(knownhosts='known_hosts')
cnopts.hostkeys = None

with pysftp.Connection(sHostName, username=sUserName, password=sPassWord, cnopts=cnopts) as sftp:
    
    # 移動目錄
    sftp.cwd('./home/')
    
    # 取得目錄內容
    directory = sftp.listdir_attr()

    # 印出結果
    for attr in directory:
        print (attr.filename, attr)

Pysftp 檔案上傳

import pysftp

sHostName = 'localhost'
sUserName = 'sftp'
sPassWord = 'sftp'

cnopts = pysftp.CnOpts(knownhosts='known_hosts')
cnopts.hostkeys = None

with pysftp.Connection(sHostName, username=sUserName, password=sPassWord, cnopts=cnopts) as sftp:
    
    # 移動目錄
    sftp.cwd('./test/')

    # 上傳檔案
    sftp.put('/Users/max/test.py')

Pysftp 檔案下載

import pysftp

sHostName = 'localhost'
sUserName = 'sftp'
sPassWord = 'sftp'

cnopts = pysftp.CnOpts(knownhosts='known_hosts')
cnopts.hostkeys = None

with pysftp.Connection(sHostName, username=sUserName, password=sPassWord, cnopts=cnopts) as sftp:

    # 檔案下載 sftp.get('遠端檔案位置', '本機檔案位置')
    sftp.get('/home/test.py','./test.py')

Pysftp 檔案刪除

import pysftp

sHostName = 'localhost'
sUserName = 'sftp'
sPassWord = 'sftp'

cnopts = pysftp.CnOpts(knownhosts='known_hosts')
cnopts.hostkeys = None

with pysftp.Connection(sHostName, username=sUserName, password=sPassWord, cnopts=cnopts) as sftp:

    # 檔案刪除 sftp.remove('遠端檔案位置')
    sftp.remove('/home/1.py')

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。