花了很多時間來研究paramiko中sftpclient的文件傳輸,一頓操做猛如虎,最後就一直卡在了路徑報錯問題,瘋狂查閱資料借鑑大佬們的心得,仍是搞很差,睡了個午覺醒來,仔細一看原來是指定路徑的文件不存在,而後我下去買了個雪糕冷靜了下。留下代碼,供你們借鑑,能夠直接拿來用就好了。
import paramiko
class Linux(object): def __init__(self,ip,username,password,timout = 30): self.hostname = ip self.username = username self.password = password self.port = 22 self.t = '' self.chan = '' #鏈接重試次數 self.try_times = 3 #調用改方法鏈接linux主機 def conn(self): pass #斷開鏈接 def close(self): pass #發送要執行的命令 def send(self): pass #上傳文件 def sftp_put(self,localfile,remotefile): # 設置SSH鏈接的遠程主機地址和端口 t = paramiko.Transport((self.hostname, 22)) # 設置登錄用戶名和密碼等參數 t.connect(username=self.username, password=self.password) #將實例化的Transport做爲參數傳入SFTPClient中 sftp = paramiko.SFTPClient.from_transport(t) # 將本地的test.txt put到遠端,並保持爲test.txt sftp.put(localfile,remotefile) #關閉鏈接 t.close() # 下載文件 def sftp_get(self,remotefile,newlocalfile): t = paramiko.Transport((self.hostname, 22)) t.connect(username=self.username, password=self.password) sftp = paramiko.SFTPClient.from_transport(t) # 將遠端的test.txt put到遠端,並保持爲newtest.txt sftp.get(remotefile,newlocalfile ) # 關閉鏈接 t.close()if __name__ == '__main__': localpath = r'I:\Meitu\數據庫密碼.txt' remotepath = r'/usr/local/test/數據庫密碼.txt' newlocalpath = r'I:\Meitu\newtest.gz' host = Linux('192.168.55.158', 'root', '1') host.sftp_put(localpath,remotepath) host.sftp_get(remotepath,newlocalpath)