说明:需先安装pexpect模块 pip intsall pexpect
代码:
# -*- coding: utf-8 -*-
#!/usr/bin/python
import os,shutil
import time
import pexpect
ifscp=1 #0本地拷贝;1是远程拷贝,需填写远程机ip/用户名/密码
srcfolder='/home/d5000/test/var/test' #源文件路径
dstfolder='/home/d5000/test/var/SDLR' #目的文件路径
bakfolder='/home/d5000/test/var/bak' #本地机备份文件夹,只在远程拷贝时使用
ip='192.1.103.183' #远程机ip
username='xxx' #远程机用户名
password='xxx' #远程机密码
def movefile(srcfolder,dstfolder):
if not os.path.exists(srcfolder):
print "srcfolder not exist: %s "%(srcfolder)
else:
if not os.path.exists(dstfolder): #目的文件夹不存在则创建
os.makedirs(dstfolder)
while True:
flist = os.listdir(srcfolder) #源文件列表
for fname in flist:
shutil.move(srcfolder+"/"+fname,dstfolder) #移动文件
print "move %s -> %s"%( fname,dstfolder)
time.sleep(0.5)
def copyfile(srcfolder,dstfolder):
if not os.path.exists(srcfolder):
print "srcfolder not exist: %s "%(srcfolder)
else:
if not os.path.exists(bakfolder): #目的文件夹不存在则创建
os.makedirs(bakfolder)
while True:
flist = os.listdir(srcfolder) #源文件列表
for fname in flist:
child = pexpect.spawn("scp " + srcfolder + "/" + fname + " " + username +"@"+ ip+":"+ dstfolder) #远程拷贝
child.expect("password:")
child.sendline(password)
child.interact()
print "copy %s -> %s"%( fname,ip+":"+dstfolder)
shutil.move(srcfolder+"/"+fname,bakfolder) #移动文件
print "move %s -> %s"%( fname,bakfolder)
time.sleep(0.5)
if __name__=="__main__":
if ifscp:
copyfile(srcfolder,dstfolder)
else:
movefile(srcfolder,dstfolder)