首页 > 代码库 > python将不同的文件名上传到不同的服务器

python将不同的文件名上传到不同的服务器

#!/usr/bin/python  
#-*- coding: utf-8 -*-  
import paramiko  
import datetime  
import os,tab,sys
from multiprocessing import Process, Pool
host_list = (
	(‘192.168.1.127‘,‘root‘,‘123456‘),
	(‘192.168.1.143‘,‘root‘,‘123456‘),
	(‘192.168.1.141‘,‘root‘,‘123456‘),
)
def put(host_info,local_dir, remote_dir):
	try:
		ip,username,password = host_info
		t = paramiko.Transport((ip, 22))  
		t.connect(username=username, password=password)  
		sftp = paramiko.SFTPClient.from_transport(t)
		files = os.listdir(local_dir)
		a=host_info[0].split(".")[-1]#取出ip的最后一位143
		for f in files:
			i1=f.split()[0].split(".")[0]#分割文件去除文件的后缀名
			if a == i1:#判断ip最后一位是否跟去除后缀名的一样
				print f
				print ‘\033[31;1mRuning put:\033[0m %s  %s ‘ % (ip, datetime.datetime.now())  
				print ‘\033[31;1mfile:\033[0m‘, f
				sftp.put(os.path.join(local_dir, f), os.path.join(remote_dir, f))
				print ‘\033[32;1mPut Success\033[0m %s ‘ % datetime.datetime.now()  
				print 
				print ‘-‘*30
				t.close()
	except:
		print "conntect",ip
result_list = []
for h in host_list:
	local_dir="/put/"
	remote_dir = "/put/"
	p = Pool(processes=2)
	result_list.append(p.apply_async(put,[h,local_dir,remote_dir]))
for res in result_list:
	res.get()

接下来我们来看下执行效果

1.首先我在我的服务器上面创建/put/目录用来存放需要上传的文件,文件的格式如下

127.txt 139.txt 143.txt

这样定义我就可以根据文件名去上传到指定的服务器上面

wKioL1RpjI_hatg7AAH9K942FSs234.jpg


从上图可以看出,根据我定义的文件上传到指定的服务器上面,由于我脚本里面没有定义139这个机器,所有这个文件也就没有被上传,接下来我们去看客户端127,143的/put/目录下是否跟上图的输入一致,对应各自的文件

wKiom1RpjFLQ2uxyAAChqUfqRqg607.jpg

wKiom1RpjF-BBiykAACHfeuyxA8374.jpg

本文出自 “服务器” 博客,请务必保留此出处http://zhangfang2012.blog.51cto.com/6380212/1577409

python将不同的文件名上传到不同的服务器