python 多线程复制文件同步
2013-02-04 15:32
375 查看
最近想做一个通过一台机器可以同时管理多台服务器,也就是多线程控制服务器,可以通过ssh管理apache、mysql等等,于是就自己动手做了一个多线程复制文件同步,功能不是很完整,不过基本功能可以实现,其他的管理也是同样的道理,大家有什么好的建议,希望多多指点。
以上是shell脚本,可以通过expect实现scp复制密码自动输入功能,格式:./expect.sh [同步文件] [IP] [远程存放的目录][远程主机用户名][密码],下面是python代码
以下是执行python脚本:
以上操作即可完成简单的同步操作,下次给大家写一些监控事件自动同步脚本,谢谢大家支持
本文出自 “游造技术博客” 博客,谢绝转载!
[root@localhost opt]# cat expect.sh expect -c " set timeout 1200; spawn /usr/bin/scp -r $1 $4@$2:$3 expect { \"*yes/no*\" {send \"yes\r\"; exp_continue} \"*password*\" {send \"$5\r\";} } expect eof;"
以上是shell脚本,可以通过expect实现scp复制密码自动输入功能,格式:./expect.sh [同步文件] [IP] [远程存放的目录][远程主机用户名][密码],下面是python代码
[root@localhost opt]# cat d.py #-*- encoding=UTF-8 -*- import time import os import sys import threading as thread class Thread1(thread.Thread): def __init__(self): thread.Thread.__init__(self) self.lock = thread.RLock() self.flag = True self.count = 0 def run(self): print 'scp复制第一个' self.lock.acquire() os.system('sh expect.sh 1.txt 192.168.251.66 /home root redhat') self.lock.release() print '第一个线程结束' class Thread2(thread.Thread): def __init__(self,event): thread.Thread.__init__(self) self.event = event def run(self): self.event.wait() os.system('./expect.sh 1.txt 192.168.251.67 /home root redhat') self.event.clear() print '第二个线程结束' print '开始运行程序' event = thread.Event() test1 = Thread1() test2 = Thread2(event) test1.start() test2.start() test1.join() event.set() test2.join() print '程序运行结束' [root@localhost opt]# cat d.py #-*- encoding=UTF-8 -*- import time import os import sys import threading as thread class Thread1(thread.Thread): def __init__(self): thread.Thread.__init__(self) self.lock = thread.RLock() self.flag = True self.count = 0 def run(self): print 'scp复制第一个' self.lock.acquire() os.system('sh expect.sh 1.txt 192.168.251.66 /home root redhat') self.lock.release() print '第一个线程结束' class Thread2(thread.Thread): def __init__(self,event): thread.Thread.__init__(self) self.event = event def run(self): self.event.wait() os.system('./expect.sh 1.txt 192.168.251.67 /home root redhat') self.event.clear() print '第二个线程结束' print '开始运行程序' event = thread.Event() test1 = Thread1() test2 = Thread2(event) test1.start() test2.start() test1.join() event.set() test2.join() print '程序运行结束'
以下是执行python脚本:
[root@localhost opt]# python d.py 开始运行程序 scp复制第一个 spawn /usr/bin/scp -r 1.txt root@192.168.251.66:/home root@192.168.251.66's password: 1.txt 100% 0 0.0KB/s 00:00 第一个线程结束 spawn /usr/bin/scp -r 1.txt root@192.168.251.67:/home root@192.168.251.67's password: 1.txt 100% 0 0.0KB/s 00:00 第二个线程结束 程序运行结束
以上操作即可完成简单的同步操作,下次给大家写一些监控事件自动同步脚本,谢谢大家支持
本文出自 “游造技术博客” 博客,谢绝转载!
相关文章推荐
- python基础实现桌面上txt文件的复制
- python实现文件分组复制到不同目录的例子
- Python 练手 1 批量复制文件
- Python 复制文件到指定文件夹
- Python标准库 多线程与同步 (threading包)
- Python利用队列广度遍历、复制文件
- Python 中的多线程,多进程,并发,并行,同步,通信
- RandomAccessFile实现多线程文件复制
- python 多线程遍历windows盘符下文件操作
- 使用多线程和IO流编写文件复制功能类
- Linux 多线程文件复制
- python深度遍历文件夹、获取文件类型、复制文件
- python写的复制文件程序
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
- 使用多线程去复制一个文件,我们可以指定文件名和线程数
- 使用python socket多线程实现大文件分发
- 多线程编程实例:不带缓冲的多线程文件复制
- 自动文件复制-python脚本
- Python多线程下载文件的方法
- 用Python多线程和paramiko给主机组批量分发命令和传送文件