欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python3寫的簡單本地文件上傳服務(wù)器實(shí)例-創(chuàng)新互聯(lián)

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

成都創(chuàng)新互聯(lián)公司一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以成都做網(wǎng)站、成都網(wǎng)站制作、移動互聯(lián)產(chǎn)品、成都營銷網(wǎng)站建設(shè)服務(wù)為核心業(yè)務(wù)。十多年網(wǎng)站制作的經(jīng)驗,使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。

大概功能是這樣:

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

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

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

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

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

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os 
import os.path 
import paramiko
import datetime
import re

# 配置屬性
config = {
	#本地項目路徑
	'local_path' : '',
	# 服務(wù)器項目路徑
	'ssh_path' : '',
	# 項目名
	'project_name' : '',
	# 忽視列表
	'ignore_list' : [],
	# ssh地址、端口、用戶名、密碼
	'hostname' : '',
	'port' : 22,
	'username' : '',
	'password' : '',
	# 是否強(qiáng)制更新
	'mandatory_update' : False,
	# 更新完成后是否重啟tomcat
	'restart_tomcat' : False,
	# tomcat bin地址
	'tomcat_path' : '',
	# 被忽略的文件類型
	'ignore_file_type_list' : []
}

# 檢查文件夾是否存在,不存在則創(chuàng)建
def check_folder(path):
	stdin, stdout, stderr = ssh.exec_command('find ' + path)
	result = stdout.read().decode('utf-8')
	if len(result) == 0 :
		print('目錄 %s 不存在,創(chuàng)建目錄' % path)
		ssh.exec_command('mkdir ' + path)
		print('%s 創(chuàng)建成功' % 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)
		# 目標(biāo)文件大小
		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,遠(yuǎn)程文件大小為:%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 不存在,創(chuàng)建目錄' % root_path)
	ssh.exec_command('mkdir ' + root_path)
	print('%s 創(chuàng)建成功' % root_path)
else:
	print('目錄 %s 已存在,獲取所有文件' % root_path)
	ssh_file_list = re.split('\n',result)

# 檢查文件夾
create_folder_num = 0
for 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 = 0
for 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 強(qiáng)制更新成功' % (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 = 0
for 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 + 1

end = datetime.datetime.now()
print('本次上傳結(jié)束:創(chuàng)建文件夾%s個,更新文件%s個,刪除文件%s個,耗時:%s' % (create_folder_num, update_file_num, delete_file_num, end-begin))

if config['restart_tomcat']:
	print('關(guān)閉tomcat')
	ssh.exec_command('sh ' + config['tomcat_path'] + 'shutdown.sh')
	print('啟動tomcat')
	ssh.exec_command('sh ' + config['tomcat_path'] + 'startup.sh')

# 關(guān)閉連接
sftp.close()
ssh.close()

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站欄目:python3寫的簡單本地文件上傳服務(wù)器實(shí)例-創(chuàng)新互聯(lián)
分享鏈接:http://aaarwkj.com/article32/gcssc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、面包屑導(dǎo)航外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站制作、App設(shè)計、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
国产精品一区二区日韩新区| 粉嫩美女精品一区二区| 97日韩在线免费视频网站| 亚洲国产精品一区二区成人| 禁区正片免费看完整国产| 青青草成人免费在线公开视频| 午夜性生活免费观看视频| 久久精品一区二区三区乱码| 97超碰97资源在线| 我想看日韩一级黄色片| 亚洲欧美综合一区二区三区| 成人av男人天堂东京热| 蜜桃少妇人妻一区二区视频| 91精品国产欧美在线| 日韩精品日本道欧美黄片| 成人av影视中文字幕 | 成人黄色av网站在线观看| 中文字幕人妻丝袜二区| 天天干夜夜泡天天操| 一区二区三区欧美日| 国产三级在线播放完整| 欧美日本国产在线一区二区| 久草视频在线免费资源站| 丁香六月五月色婷婷网| 国产一区av麻豆免费观看| 欧美日韩国产一下老妇| 国产三级在线观看视频| 久久蜜臀av一区三区| 日本欧美中文字幕一区| 亚洲午夜经典一区二区日韩| 白天躁晚上躁天天躁在线| 粉嫩一区二区三区精品视频| 亚洲少妇精品视频在线| 色婷婷精品综合久久狠狠| 日本一区二区国产在线| 久久精品久久精品欧美大片| 亚洲一区二区三区熟女av| 亚洲精品影视一区二区| 国产精品久久久久精品三级下载| 日本又色又爽又黄又高潮| 午夜宅男在线视频观看|