欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python通過paramiko復制遠程文件及文件目錄到本地

 更新時間:2019年04月30日 11:51:43   作者:森林番茄  
這篇文章主要為大家詳細介紹了python通過paramiko復制遠程文件及文件目錄到本地,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近寫運維自動化平臺,需要用python寫很多的小功能模塊。

這里就分享一個用Python的paramiko來實現(xiàn)功能的一段代碼:

復制遠程服務器上的文件及文件夾到本地目錄。

解釋一下什么叫paramiko:

paramiko是用python寫的一個模塊,遵循SSH2協(xié)議,支持以加密和認證的方式,進行遠程服務器的連接。利用該模塊,可以方便的進行ssh連接和sftp協(xié)議進行sftp文件傳輸以及遠程命令執(zhí)行。

安裝paramiko也很簡單,我用的是python3,裝好了pip,可以直接用pip來安裝。
不過由于 paramiko 模塊內部依賴pycrypto,所以先下載安裝pycrypto:

pip3 install pycrypto
pip3 install paramiko

好了。我定義一個方法,用于遠程復制文件。代碼如下:

import os
import paramiko

def RemoteScp(host_ip, host_port, host_username, host_password, remote_file, local_file):
  scp = paramiko.Transport((host_ip, host_port))
  scp.connect(username=host_username, password=host_password)
  sftp = paramiko.SFTPClient.from_transport(scp)
  sftp.get(remote_file, local_file)
  scp.close()
  return ("success")

注意這里的語句:

sftp.get(remote_file, local_file)中自帶的get方法,只能拷貝文件目錄,不能拷貝文件夾。

然后調用這個方法:

if __name__ == '__main__':
  host_ip = '192.168.1.123'
  host_port = 22
  host_username = 'root'
  host_password = 'password'
  remote_path = '/tmp/test.sql'
  local_path = '/tmp/test.sql'
  RemoteScp(host_ip, host_port, host_username, host_password, remote_path, local_path)

這就是基本遠程文件復制的功能實現(xiàn)。這里只能實現(xiàn)文件對文件的遠程復制。

如果我們要遠程復制整個文件夾。需要對上面的方法改進一下,加一段循環(huán),讓其能遍歷遠程目錄里的所有文件,然后按照上面的方法依次復制到本地。

我在代碼中加了一些注釋。修改以后的完整代碼如下:

import os
import paramiko

def RemoteScp(host_ip, host_port, host_username, host_password, remote_path, local_path):
  scp = paramiko.Transport((host_ip, host_port))
  scp.connect(username=host_username, password=host_password)
  sftp = paramiko.SFTPClient.from_transport(scp)
  try:
    remote_files = sftp.listdir(remote_path)
    for file in remote_files:  #遍歷讀取遠程目錄里的所有文件
      local_file = local_path + file
      remote_file = remote_path + file
      sftp.get(remote_file, local_file)
  except IOError:  # 如果目錄不存在則拋出異常
    return ("remote_path or local_path is not exist")
  scp.close()


if __name__ == '__main__':
  host_ip = '192.168.1.123'    # 遠程服務器IP
  host_port = 22          # 遠程服務器端口
  host_username = 'root'      #遠程服務器用戶名
  host_password = 'password'    #遠程服務器密碼
  remote_path = '/tmp/'      #這個是遠程目錄
  local_path = '/tmp/'       #這個是本地目錄
  RemoteScp(host_ip, host_port, host_username, host_password, remote_path, local_path) #調用方法

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論