Tôi đang làm việc trên một công cụ đơn giản để chuyển các tệp đến một vị trí được mã hóa cứng với mật khẩu cũng được mã hóa cứng. Tôi là một người mới làm trăn, nhưng nhờ có ftplib, thật dễ dàng:
import ftplib
info= ('someuser', 'password') #hard-coded
def putfile(file, site, dir, user=(), verbose=True):
"""
upload a file by ftp to a site/directory
login hard-coded, binary transfer
"""
if verbose: print 'Uploading', file
local = open(file, 'rb')
remote = ftplib.FTP(site)
remote.login(*user)
remote.cwd(dir)
remote.storbinary('STOR ' + file, local, 1024)
remote.quit()
local.close()
if verbose: print 'Upload done.'
if __name__ == '__main__':
site = 'somewhere.com' #hard-coded
dir = './uploads/' #hard-coded
import sys, getpass
putfile(sys.argv[1], site, dir, user=info)
Vấn đề là tôi không thể tìm thấy bất kỳ thư viện nào hỗ trợ sFTP. Cách bình thường để làm một cái gì đó như thế này một cách an toàn là gì?
Chỉnh sửa: Nhờ các câu trả lời ở đây, tôi đã làm cho nó hoạt động với Paramiko và đây là cú pháp.
import paramiko
host = "THEHOST.com" #hard-coded
port = 22
transport = paramiko.Transport((host, port))
password = "THEPASSWORD" #hard-coded
username = "THEUSERNAME" #hard-coded
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
import sys
path = './THETARGETDIRECTORY/' + sys.argv[1] #hard-coded
localpath = sys.argv[1]
sftp.put(localpath, path)
sftp.close()
transport.close()
print 'Upload done.'
Cảm ơn một lần nữa!