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')