python paramiko利用sftp上傳目錄到遠程的實例
更新時間:2019年01月03日 12:16:07 作者:zdpyouzhe
今天小編就為大家分享一篇python paramiko利用sftp上傳目錄到遠程的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
網上大部分都是上傳文件,于是個人參照網上一些博客的內容,寫了一個把windows上目錄上傳到遠程linux的一個小程序。
下面是代碼:
class ExportPrepare(object):
def __init__(self):
pass
def sftp_con(self):
t = paramiko.Transport((self.ip, self.port))
t.connect(username=self.username, password=self.password)
return t
# 找到所有你要上傳的目錄已經文件。
def __get_all_files_in_local_dir(self, local_dir):
all_files = list()
if os.path.exists(local_dir):
files = os.listdir(local_dir)
for x in files:
filename = os.path.join(local_dir, x)
print "filename:" + filename
# isdir
if os.path.isdir(filename):
all_files.extend(self.__get_all_files_in_local_dir(filename))
else:
all_files.append(filename)
else:
print '{}does not exist'.format(local_dir)
return all_files
# Copy a local file (localpath) to the SFTP server as remotepath
def sftp_put_dir(self):
try:
#本地test目錄上傳到遠程root/usr/下面
local_dir = "c:/test"
remote_dir = "/root/usr/test"
t = self.sftp_con()
sftp = paramiko.SFTPClient.from_transport(t)
# sshclient
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(self.ip, port=self.port, username=self.username, password=self.password, compress=True)
ssh.exec_command('rm -rf ' + remote_dir)
if remote_dir[-1] == '/':
remote_dir = remote_dir[0:-1]
all_files = self.__get_all_files_in_local_dir(local_dir)
for x in all_files:
filename = os.path.split(x)[-1]
remote_file = os.path.split(x)[0].replace(local_dir, remote_dir)
path = remote_file.replace('\\', '/')
# 創(chuàng)建目錄 sftp的mkdir也可以,但是不能創(chuàng)建多級目錄所以改用ssh創(chuàng)建。
tdin, stdout, stderr = ssh.exec_command('mkdir -p ' + path)
print stderr.read()
remote_filename = path + '/' + filename
print u'Put files...' + filename
sftp.put(x, remote_filename)
ssh.close()
except Exception, e:
print e
if __name__=='__main__':
export_prepare = ExportPrepare()
export_prepare.sftp_put_dir()
比較匆忙,不足之處可以指出,共同進步。
以上這篇python paramiko利用sftp上傳目錄到遠程的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解django實現(xiàn)自定義manage命令的擴展
這篇文章主要介紹了django實現(xiàn)自定義manage命令的擴展,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08
python scatter散點圖用循環(huán)分類法加圖例
這篇文章主要為大家詳細介紹了python scatter散點圖用循環(huán)分類法加圖例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03
Python linecache.getline()讀取文件中特定一行的腳本
Python中使用標準庫中的linecache中的getline方法可以從某個文件中讀取出特定的一行。2008-09-09
淺談多卡服務器下隱藏部分 GPU 和 TensorFlow 的顯存使用設置
這篇文章主要介紹了淺談多卡服務器下隱藏部分 GPU 和 TensorFlow 的顯存使用設置,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python3自動簽到 定時任務 判斷節(jié)假日的實例
今天小編就為大家分享一篇Python3自動簽到 定時任務 判斷節(jié)假日的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11

