python通过paramiko复制远程文件及文件目录到本地


Posted in Python onApril 30, 2019

最近写运维自动化平台,需要用python写很多的小功能模块。

这里就分享一个用Python的paramiko来实现功能的一段代码:

复制远程服务器上的文件及文件夹到本地目录。

解释一下什么叫paramiko:

paramiko是用python写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输以及远程命令执行。

安装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)

这就是基本远程文件复制的功能实现。这里只能实现文件对文件的远程复制。

如果我们要远程复制整个文件夹。需要对上面的方法改进一下,加一段循环,让其能遍历远程目录里的所有文件,然后按照上面的方法依次复制到本地。

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

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) #调用方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的动态重新封装的教程
Apr 11 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
python实现数据分析与建模
Jul 11 Python
Python3 元组tuple入门基础
Feb 09 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
win10从零安装配置pytorch全过程图文详解
May 08 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
如何完美的建立一个python项目
Oct 09 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
想学画画?python满足你!
Dec 24 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 Python
python快速安装OpenCV的步骤记录
Feb 22 Python
python实现定时压缩指定文件夹发送邮件
Dec 22 #Python
python定时复制远程文件夹中所有文件
Apr 30 #Python
python实现图片转字符小工具
Apr 30 #Python
python 列表中[ ]中冒号‘:’的作用
Apr 30 #Python
python实现趣味图片字符化
Apr 30 #Python
python3对接mysql数据库实例详解
Apr 30 #Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 #Python
You might like
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
PHP7多线程搭建教程
2017/04/21 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
学习vue.js计算属性
2016/12/03 Javascript
理解javascript中的闭包
2017/01/11 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
jstree中的checkbox默认选中和隐藏示例代码
2019/12/29 Javascript
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
详细分析python3的reduce函数
2017/12/05 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
服务中心夜班服务员岗位职责
2013/11/27 职场文书
打架检讨书400字
2014/01/17 职场文书
中学生寄语大全
2014/04/03 职场文书
我的梦想演讲稿
2014/04/30 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
店长岗位职责
2015/02/11 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
nginx常用配置conf的示例代码详解
2022/03/21 Servers
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技