亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python3寫的簡單本地文件上傳服務器實例

2020-02-15 21:37:08
字體:
來源:轉載
供稿:網友

python是個很好玩的東西?好吧我隨口說的,反正因為各種原因(其實到底是啥我也不知道),簡單的學習了下python,然后寫了一個上傳文件上服務器的小玩具練手。

大概功能是這樣:

1、獲取本地文件列表(包括文件夾)

2、檢查服務器上是否存在,不存在直接上傳,存在的話,文件夾無視,文件比較大小,大小不一致則覆蓋,最后檢查服務器上是否存在本地沒有的文件,存在則刪除

3、之后增加了忽略列表,忽略文件類型

4、然后增加了重啟tomcat,但是這個功能未進行測試

大概就是這個樣子,哦了,丟代碼丟代碼

#!/usr/bin/env python3# -*- coding: utf-8 -*-import os import os.path import paramikoimport datetimeimport re# 配置屬性config = {	#本地項目路徑	'local_path' : '',	# 服務器項目路徑	'ssh_path' : '',	# 項目名	'project_name' : '',	# 忽視列表	'ignore_list' : [],	# ssh地址、端口、用戶名、密碼	'hostname' : '',	'port' : 22,	'username' : '',	'password' : '',	# 是否強制更新	'mandatory_update' : False,	# 更新完成后是否重啟tomcat	'restart_tomcat' : False,	# tomcat bin地址	'tomcat_path' : '',	# 被忽略的文件類型	'ignore_file_type_list' : []}# 檢查文件夾是否存在,不存在則創建def check_folder(path):	stdin, stdout, stderr = ssh.exec_command('find ' + path)	result = stdout.read().decode('utf-8')	if len(result) == 0 :		print('目錄 %s 不存在,創建目錄' % path)		ssh.exec_command('mkdir ' + path)		print('%s 創建成功' % path)		return 1	else:		print('目錄 %s 已存在' % path)		return 0# 檢查文件是否存在,不存在直接上傳,存在檢查大小是否一樣,不一樣則上傳def check_file(local_path, ssh_path):	# 檢查文件是否存在,不存在直接上傳	stdin, stdout, stderr = ssh.exec_command('find ' + ssh_path)	result = stdout.read().decode('utf-8')	if len(result) == 0 :		sftp.put(local_path,ssh_path)		print('%s 上傳成功' % (ssh_path))		return 1	else:		# 存在則比較文件大小		# 本地文件大小		lf_size = os.path.getsize(local_path)		# 目標文件大小		stdin, stdout, stderr = ssh.exec_command('du -b ' + ssh_path)		result = stdout.read().decode('utf-8')		tf_size = int(result.split('/t')[0])		print('本地文件大小為:%s,遠程文件大小為:%s' % (lf_size, tf_size))		if lf_size == tf_size:			print('%s 大小與本地文件相同,不更新' % (ssh_path))			return 0		else:			sftp.put(local_path,ssh_path)			print('%s 更新成功' % (ssh_path))			return 1# 上傳流程開始print('上傳開始')begin = datetime.datetime.now()# 文件夾列表folder_list = []# 文件列表file_list = []# ssh上文件列表ssh_file_list = []for parent,dirnames,filenames in os.walk(config['local_path']+config['project_name']):  #初始化文件夾列表 for dirname in dirnames: 	p = os.path.join(parent,dirname) 	folder_list.append(p[p.find(config['project_name']):]) #初始化文件列表 for filename in filenames: 	if config['ignore_list'].count(filename) == 0: 		p = os.path.join(parent,filename) 		file_list.append(p[p.find(config['project_name']):])print('共有文件夾%s個,文件%s個' % (len(folder_list),len(file_list)))# ssh控制臺ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname=config['hostname'], port=config['port'], username=config['username'], password=config['password'])# ssh傳輸transport = paramiko.Transport((config['hostname'],config['port']))transport.connect(username=config['username'],password=config['password'])sftp = paramiko.SFTPClient.from_transport(transport)# 檢查根目錄是否存在root_path = config['ssh_path'] + config['project_name']stdin, stdout, stderr = ssh.exec_command('find ' + root_path)result = stdout.read().decode('utf-8')if len(result) == 0 :	print('目錄 %s 不存在,創建目錄' % root_path)	ssh.exec_command('mkdir ' + root_path)	print('%s 創建成功' % root_path)else:	print('目錄 %s 已存在,獲取所有文件' % root_path)	ssh_file_list = re.split('/n',result)# 檢查文件夾create_folder_num = 0for item in folder_list:	target_folder_path = config['ssh_path'] + item	create_folder_num = create_folder_num + check_folder(target_folder_path)# 檢查文件update_file_num = 0for item in file_list:	if config['ignore_file_type_list'].count(os.path.splitext(item)[1]) == 0:		local_file_path = config['local_path'] + item		target_file_path = config['ssh_path'] + item		if config['mandatory_update']:			sftp.put(local_file_path,target_file_path)			print('%s 強制更新成功' % (target_file_path))			update_file_num = update_file_num + 1		else:			update_file_num = update_file_num + check_file(local_file_path, target_file_path)	else:		print('%s 在被忽略文件類型中,所以被忽略' % item)# 檢查ssh是否有需要刪除的文件delete_file_num = 0for item in ssh_file_list:	temp = item[item.find(config['project_name']):]	if folder_list.count(temp) == 0 and file_list.count(temp) == 0 and temp != config['project_name'] and temp != '':		print('%s 在本地不存在,刪除' % item)		ssh.exec_command('rm -rf ' + item)		delete_file_num = delete_file_num + 1end = datetime.datetime.now()print('本次上傳結束:創建文件夾%s個,更新文件%s個,刪除文件%s個,耗時:%s' % (create_folder_num, update_file_num, delete_file_num, end-begin))if config['restart_tomcat']:	print('關閉tomcat')	ssh.exec_command('sh ' + config['tomcat_path'] + 'shutdown.sh')	print('啟動tomcat')	ssh.exec_command('sh ' + config['tomcat_path'] + 'startup.sh')# 關閉連接sftp.close()ssh.close()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品美女网站| 色无极亚洲影院| 亚洲天堂男人天堂女人天堂| 欧美一区二区三区四区在线| 亚洲欧洲午夜一线一品| 亚洲电影天堂av| 另类美女黄大片| 精品无人区太爽高潮在线播放| 欧美成人精品xxx| 欧美激情一级精品国产| 欧美肥老太性生活视频| 日韩在线视频免费观看高清中文| 国产91在线高潮白浆在线观看| 欧美激情a在线| 亚洲欧美一区二区三区在线| 国产精品国产自产拍高清av水多| 欧美精品做受xxx性少妇| 亚洲一区二区久久久| 欧美精品videossex88| 国产成人综合av| 免费91麻豆精品国产自产在线观看| 亚洲性无码av在线| 国产精品永久免费在线| 中文字幕亚洲综合久久筱田步美| 亚洲精品wwww| 日韩美女中文字幕| 中国china体内裑精亚洲片| 国产一区二区丝袜高跟鞋图片| 成人中文字幕+乱码+中文字幕| 九九热99久久久国产盗摄| 伊人久久久久久久久久久久久| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲变态欧美另类捆绑| 久久人91精品久久久久久不卡| 色综合天天狠天天透天天伊人| 97在线视频精品| 欧美激情手机在线视频| 色一情一乱一区二区| 久久久精品久久久| 日韩免费av片在线观看| 国产亚洲精品美女久久久久| 欧美日韩黄色大片| 国产成人精品视频在线| 久久久久久97| 精品久久久久久电影| 91av视频在线免费观看| 亚洲曰本av电影| 韩剧1988免费观看全集| 欧美国产视频日韩| 欧美一区亚洲一区| 成人黄色网免费| 日韩精品在线免费观看| 亚洲国产成人在线视频| 久久久久日韩精品久久久男男| 欧美巨乳在线观看| 欧美日韩国产在线看| 国产欧美一区二区三区久久人妖| 久久手机免费视频| 中文国产成人精品久久一| 国产欧美日韩精品丝袜高跟鞋| 亚洲国产成人精品一区二区| 精品日韩美女的视频高清| 国产黑人绿帽在线第一区| 欧美性做爰毛片| 成人午夜高潮视频| 亚洲精品国产综合久久| 色樱桃影院亚洲精品影院| 亚洲精品国产精品久久清纯直播| 国产精品视频一| 亚洲欧美日韩一区二区在线| 91精品免费久久久久久久久| 亚洲成人网在线观看| 97成人超碰免| 久久91精品国产91久久久| 亚洲人a成www在线影院| 欧美老女人bb| 亚洲欧美资源在线| 欧美精品做受xxx性少妇| 久热精品视频在线免费观看| 国产亚洲成av人片在线观看桃| 亚洲第一色在线| 欧美性xxxxxx| 日韩人在线观看| 亚洲综合在线播放| 精品中文视频在线| 久久夜色精品国产亚洲aⅴ| 久久国产视频网站| 日韩av网站导航| 国产精品视频免费观看www| 欧美综合在线观看| 欧美精品18videos性欧美| 亚洲综合精品一区二区| 97色在线观看免费视频| 欧美日韩激情视频| 亚洲人成伊人成综合网久久久| 国产精品吹潮在线观看| 国外色69视频在线观看| 91在线观看免费观看| 久久精品久久久久久| 成人在线中文字幕| 日韩欧美成人免费视频| 日韩成人av在线播放| 亚洲国产日韩欧美在线图片| 精品国产区一区二区三区在线观看| 久久久久久12| 久久国产精品久久国产精品| 欧美大肥婆大肥bbbbb| 国产精品久久久久一区二区| 伊人青青综合网站| 久久久久久18| 韩剧1988在线观看免费完整版| 欧美一级在线播放| 欧美与欧洲交xxxx免费观看| 国产xxx69麻豆国语对白| 亚洲人线精品午夜| 亚洲系列中文字幕| 亚洲最大激情中文字幕| 亚洲男人天堂视频| 亚洲精品久久久久久久久久久久久| 亚洲日本成人女熟在线观看| 久久亚洲欧美日韩精品专区| 日韩精品视频在线免费观看| 欧美综合在线观看| 欧美三级免费观看| 亚洲成av人影院在线观看| 国产精品直播网红| 久久成人在线视频| 日韩成人中文电影| 欧美性猛交xxxx乱大交3| 日韩激情在线视频| 91精品国产高清| 欧美精品成人91久久久久久久| 国产精品美女久久久久久免费| 久久久久久久成人| 日韩精品极品视频| 国产99久久精品一区二区 夜夜躁日日躁| 色诱女教师一区二区三区| 日韩电影中文字幕在线观看| 日本精品免费观看| 精品性高朝久久久久久久| 成人妇女免费播放久久久| 久久久精品视频在线观看| 最近日韩中文字幕中文| 亚洲男人天堂网站| 亚洲欧美一区二区三区在线| 亚洲人成电影网站色…| 国产精品一区二区三区在线播放| 18久久久久久| 欧美色欧美亚洲高清在线视频| 久久精品国产2020观看福利| 国产香蕉一区二区三区在线视频| 欧美极品第一页| 国产欧美精品在线| 51精品国产黑色丝袜高跟鞋| 国产免费一区二区三区在线观看| 九九热这里只有精品6| 午夜精品久久久久久久99热浪潮| 国产亚洲欧美日韩一区二区| 久久久91精品| 欧美丰满老妇厨房牲生活| 欧美成人精品不卡视频在线观看| 色婷婷av一区二区三区久久| 日韩人体视频一二区| 亚洲男人av在线|