我正在开发一个简单的工具,该工具将文件传输到硬编码位置,密码也是硬编码的。我是 python 新手,但感谢 ftplib,这很容易:
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)
问题是我找不到任何支持 sFTP 的库。安全地做这样的事情的正常方法是什么?
编辑:多亏了这里的答案,我已经让它与 Paramiko 一起工作,这就是语法。
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.'
再次感谢!
Paramiko支持 SFTP。我用过它,而且我用过 Twisted。两者都有自己的位置,但您可能会发现从 Paramiko 开始更容易。