python scp 批量同步文件的实现方法


Posted in Python onJanuary 03, 2019

该脚本用于将源主机列表路径下的所有文件同步于目标主机的/tmp下面

#!/usr/bin/python
# -*- coding:utf-8 -*-

import pexpect
import os
import os.path

src_path = ['/tmp/', '/opt/', '/root/']
dest_host = "192.168.143.201"
dest_path = "/tmp"

for path in src_path:
 file_list = os.listdir(path)
 for files in file_list:
  f = path + files
  cmd = 'scp -r %s %s:%s' % (f, dest_host, dest_path)
  scp = pexpect.spawn(cmd)
  scp.read()

下面的脚本基于第一个脚本做了补充,通过字典列出源主机的路径及对应目标主机的路径 key —> value 的映射关系,并且会去远端进行目录是否存在的检测,以及文件同步过程的详细输出。

#!/usr/bin/python
# -*- coding:utf-8 -*-

import pexpect
import os
import os.path

path_dict = {'/tmp/': '/tmp1/', '/opt/': '/opt1/', '/data/': '/data1/'}
dest_host = "192.168.143.201"

def src_to_dest(path_dict, dest_host):
 ''' 该脚本用于将主机 /tmp,/opt,/data 下的所有文件同步至远程主机 /tmp1,/data1,/opt1 '''

 for path in path_dict:
  file_list = os.listdir(path)

  cmd = 'ssh %s "[ -d %s || mkdir -p %s ]"' % (dest_host, path_dict[path], path_dict[path])
  ssh = pexpect.spawn(cmd)
  ssh.read()

  #dest_path = "ssh %s '[ -d %s ] || mkdir -p %s'" % (dest_host, path_dict[path], path_dict[path])
  #os.system(dest_path)
  for files in file_list:
   src_file = path + files
   print src_file + ' ---> ' + dest_host + ':' + path_dict[path] + files
   cmd = 'scp -r %s %s:%s' % (src_file, dest_host, path_dict[path])
   scp = pexpect.spawn(cmd)
   scp.read()

src_to_dest(path_dict, dest_host)

以上这篇python scp 批量同步文件的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
Python入门教程之运算符与控制流
Aug 17 Python
python3设计模式之简单工厂模式
Oct 17 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
python 求一个列表中所有元素的乘积实例
Jun 11 Python
pandas 层次化索引的实现方法
Jul 06 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
基于Python实现视频的人脸融合功能
Jun 12 Python
Python字典取键、值对的方法步骤
Sep 30 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 #Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 #Python
Python中shapefile转换geojson的示例
Jan 03 #Python
Python关于excel和shp的使用在matplotlib
Jan 03 #Python
Python使用folium excel绘制point
Jan 03 #Python
Python获取航线信息并且制作成图的讲解
Jan 03 #Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 #Python
You might like
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
jQuery事件详解
2017/02/23 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python的数学算法函数及公式用法
2020/11/18 Python
营销与策划个人求职信
2013/09/22 职场文书
资料员岗位职责
2013/11/17 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
个人整改方案范文
2014/10/25 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
大学生敬老院活动总结
2015/05/07 职场文书