seacnboy 发表于 2014-06-30 21:41

pexpect rcp问题

代码:
#!/usr/bin/env python

import pexpect,time

file_time=time.strftime('%Y%m%d',time.localtime())
ip_list=['10.1.1.1','10.2.2.2']
ip_node=['A1','A2']
file_name=['/home/cudb/swbackup','/home/cudb/automatedBackupStorage','/home/cudb/systemDataBackup']
for i in range(len(ip_list)):
      scp_swbackup=pexpect.spawn('scp -r ab@%s:/home/cudb/swbackup/HC/test/%s%s' %(ip_list,ip_node,file_time))
      scp_swbackup.expect("Password:")
      scp_swbackup.sendline("1234")
for i in range(len(ip_list)):
      scp_autobackup=pexpect.spawn('scp -r ab@%s:/home/cudb/automatedBackupStorage/HC/test/%s%s' %(ip_list,ip_node,file_time))
      scp_autobackup.expect("Password:")
      scp_autobackup.sendline("1234")
for i in range(len(ip_list)):
      scp_sysbackup=pexpect.spawn('scp -r ab@%s:/home/cudb/systemDataBackup/HC/test/%s%s' %(ip_list,ip_node,file_time))
      scp_sysbackup.expect("Password:")
      scp_sysbackup.sendline("1234")
print 'all file backuped!'

问题:
1:文件夹下的所有文件不能都被SCP到当前文件夹,有文件被遗漏掉,求破?
2:如果在“scp_swbackup.sendline("1234")"后面跟一句”child.interact()“,每次都需要手动键入回车键,才能进行下一步的scp动作,怎么处理呢?
3:还能如何精简该代码?
谢谢大家!

icymirror 发表于 2014-07-01 10:09

回复 1# seacnboy
没有用过pexpect,只做个代码简化吧。#!/usr/bin/env python

import pexpect,time

def MyScp(ipAddr, srcFolder, ipNode, fileTimeStamp):
    scp_swbackup=pexpect.spawn('scp -r ab@%s:%s/HC/test/%s%s' %(ipAddr, srcFolder, ipNode, fileTimeStamp))
    scp_swbackup.expect("Password:")
    scp_swbackup.sendline("1234")

file_time = time.strftime('%Y%m%d',time.localtime())
ip_list=['10.1.1.1','10.2.2.2']
ip_node=['A1','A2']
file_name=['/home/cudb/swbackup','/home/cudb/automatedBackupStorage','/home/cudb/systemDataBackup']

for addr in zip(ip_list, ip_node):
    for location in file_name:
      MyScp(addr, location, addr, file_time)

print 'all file backuped!'
页: [1]
查看完整版本: pexpect rcp问题