Python实现的远程文件自动打包并下载功能示例


Posted in Python onJuly 12, 2019

本文实例讲述了Python实现的远程文件自动打包并下载功能。分享给大家供大家参考,具体如下:

一 点睛

在Linux系统集群运营当中,时常需要批量远程执行Linux命令,并且双向同步文件的操作。

本示例通过使用spawn()方法执行ssh、scp 命令的思路来实现。

二 代码

import pexpect
import sys
ip="192.168.0.104"
user="root"
passwd="123456"
target_file="/data/test.txt"
child = pexpect.spawn('/usr/bin/ssh', [user+'@'+ip])
fout = file('mylog.txt','w')
child.logfile = fout
try:
  child.expect('password: ')
  child.sendline(passwd)
  child.expect('#')
  child.sendline('tar -czf /data/test.tar.gz '+target_file)
  child.expect('#')
  print child.before
  child.sendline('exit')
  fout.close()
except pexpect.EOF:
  print "expect EOF1"
except pexpect.TIMEOUT:
  print "expect TIMEOUT1"
child = pexpect.spawn('/usr/bin/scp', [user+'@'+ip+':/data/test.tar.gz','/home'])
fout = file('mylog.txt','a')
child.logfile = fout
try:
  child.expect('(?i)password')
  child.sendline(passwd)
  child.expect(pexpect.EOF)
except pexpect.EOF:
  print "expect EOF2"
except pexpect.TIMEOUT:
  print "expect TIMEOUT2"

三 运行

[root@localhost pymaintain]# python 5_3_3.py
tar -czf /data/test.tar.gz /data/test.txt
tar: Removing leading `/' from member names

四 日志输出

[root@localhost pymaintain]# cat mylog.txt
Kernel \r on an \m
root@192.168.0.104's password: 123456
Last login: Sun Feb 24 16:20:25 2019 from 192.168.0.120
hello cakin24!
[root@slave2 ~]# tar -czf /data/test.tar.gz /data/test.txt
tar -czf /data/test.tar.gz /data/test.txt
tar: Removing leading `/' from member names
[root@slave2 ~]# exit
Kernel \r on an \m
root@192.168.0.104's password: 123456
test.tar.gz                  100% 115  40.3KB/s  00:00

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python程序员开发中常犯的10个错误
Jul 07 Python
Python 常用的安装Module方式汇总
May 06 Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
对python的输出和输出格式详解
Dec 08 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
python获取命令行参数实例方法讲解
Nov 02 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 #Python
在交互式环境中执行Python程序过程详解
Jul 12 #Python
pip指定python位置安装软件包的方法
Jul 12 #Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 #Python
Python-copy()与deepcopy()区别详解
Jul 12 #Python
新手入门Python编程的8个实用建议
Jul 12 #Python
python读取并写入mat文件的方法
Jul 12 #Python
You might like
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
php header函数的常用http头设置
2015/06/25 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
Python合并字符串的3种方法
2015/05/21 Python
Python引用计数操作示例
2018/08/23 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
python字典的常用方法总结
2019/07/31 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
Java模拟试题
2014/11/10 面试题
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
暑期培训随笔感言
2014/03/10 职场文书
公司办公室岗位职责
2014/03/19 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
电影雷锋观后感
2015/06/10 职场文书
HTML中的表格元素介绍
2022/02/28 HTML / CSS
MYSQL如何查看进程和kill进程
2022/03/13 MySQL