#!/usr/bin/python
#-*- coding: utf-8 -*-
#\magent\src\restservice\synchcofig.py
'''
用于同步服务器的配置文件
'''
import urllib2
#import tools
import logging,logging.config
import os
import json
import hashlib
import thread
import time
import urllib
from time import sleep
import threading
FILE=os.getcwd()
LOG_NAME='syncSysConfigFile'
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s:%(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename = os.path.join(FILE,'log.txt'),
filemode='w'
)
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger(LOG_NAME).addHandler(console)
log = logging.getLogger(LOG_NAME)
SERVICE_IP='132.121.130.18:8008'
threads=[]
index=1
#生成本地的MD5文件,用于比对服务器上的MD5文件
def sendRequest():
threads=[]
index=1
log.info('send request to service............')
url = 'http://'+SERVICE_IP+'/checkFile/'
jsonStr = urllib2.urlopen(url).read()
jsoObj = json.loads(jsonStr)
state = jsoObj['state']
if state=='200':
dataList = jsoObj['data']
if dataList is not None:
for data in dataList:
#time.sleep(1)
#log.info(data)
js = json.loads(data)
filename= js['filename']
servicepath= js['servicepath']
clientpath= js['clientpath']
md5=js['md5']
downLoadFile(servicepath,clientpath,md5)
else:
log.info('no find the sync file,please check the magent_config table..................')
else:
log.info(jsoObj['message'])
'''
根据MD5值进行判断,如果不一致,则从新从服务器上下载文件
'''
def downLoadFile(servicepath,clientpath,md5):
down = False
if os.path.exists(clientpath):
#如果存在,则判断md5值是否一致
newMD5 = MD5(clientpath)
if newMD5 == md5:
pass
else:
down = True
else:
dirname=os.path.dirname(clientpath)
if os.path.exists(dirname):
pass
else:
os.makedirs(dirname)
down = True
#启用线程进行下载
if down:
"""global index
index = index + 1"""
t = threading.Thread(target=mulitThreadStart,args=(servicepath,clientpath,1))
t.start()
threads.append(t)
for i in threads:
t.join()
#采用多线程进行下载
def mulitThreadStart(servicepath,clientpath,index):
time.sleep(index)
log.info(time.strftime('%Y-%m-%d %H:%M:%S') + ' ' +servicepath + '---->' +clientpath)
url = 'http://'+SERVICE_IP+'/downloadFile2/?downpath=' +servicepath
urllib.urlretrieve(url,clientpath)
#获取文件的md5值
def MD5(filepath):
with open(filepath,'rb') as f:
md5obj = hashlib.md5()
md5obj.update(f.read())
hash = md5obj.hexdigest()
return hash
if __name__ == '__main__':
log.info(time.strftime('%Y-%m-%d %H:%M:%S') +' begin to synchronou service file.............')
sendRequest()
log.info(time.strftime('%Y-%m-%d %H:%M:%S') +' synchronou service file end.............')
---2016-05-24
@dianxinguangchang.zhongshanerlu.yuexiuqu.guangzhoushi.guangdongsheng
分享到:
相关推荐
下载服务器文件到本地,并删除已下载的服务器文件
如下所示: ...以上这篇linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文
主要介绍了本地文件与服务器文件同步shell脚本的方法,然后在文章给大家补充介绍了shell脚本备份本地服务器的文件到远程服务器的实例代码,需要的朋友可以参考下
Java 实现对比ftp文件和本地文件的修改时间 ftp服务器文件比本地文件新时 把服务器文件下载覆盖本地文件 更新本地文件
VB编程,实现上传本地文件到服务器
服务器与本地文件通过文件对比进行数据的更新 ……
NULL 博文链接:https://1017401036.iteye.com/blog/2311922
NodeJS本地上传文件至服务器
该项目主要是实现将本地文件上传到FTP服务器中,主要有以下功能: 1、可以定时自动上传也可以手动上传 2、通过XML文件可以配置FTP服务器信息 3、自动上传时需要配置上传文件所在本地的文件夹,也通过XML进行配置 4、...
使用JavaScript实现文件上传到本地服务器并获取到上传后文件所在路径,是由到JavaScript,java以及html页面。这个比较好,不是在jsp上获取路径,jsp太简单了,而且过时了,所以就在html页面实现了下功能,我主要是做...
4. **文件流操作**:为了将接收到的数据保存到本地文件,我们需要使用`FileStream`类创建一个到本地文件的流,然后使用`Stream.CopyTo()`方法将网络流的数据复制到本地文件流。 5. **进度更新与错误处理**:为了...
2、检查服务器上是否存在,不存在直接上传,存在的话,文件夹无视,文件比较大小,大小不一致则覆盖,最后检查服务器上是否存在本地没有的文件,存在则删除 3、之后增加了忽略列表,忽略文件类型 4、然后增加了重启...
Finallshel 可以上传/下载 文件到服务器/本地,中间不会中断,比ftp要好用的多。
采用SFTP定时扫描本地文件,同时判断本地文件是否传输完成,如果传输完成,则向服务器开始上传本地文件,.bat启动,包含配置文件等,已通过公司测试
标题中的“本地的文件上传到服务器的工具”指的是用于在个人计算机(本地)与远程服务器之间传输文件的应用程序。这种工具通常支持FTP(文件传输协议)、SFTP(安全文件传输协议)和其他相关协议,使用户能够方便、...
上传本地文件夹的文件到FTP服务器指定目录,可直接使用,也可修改源码,编译器VS2015
用WinForm做的,可以上传文件到服务器。
服务器与本地文件互通教程,通过该教程,可以将服务器你自己的用户磁盘挂载到本地电脑,可在本地对服务器上的文件进行修改,并且可同步修改服务器上文件。
// 获取FTP服务器文件列表 FTPFile[] files = client.listFiles(); for (FTPFile file : files) { // 检查文件最后修改时间并下载 if (needToUpdate(file)) { client.retrieveFile(file.getName(), new ...