#!/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命令拷贝文件到本地,拷贝本地文件到远程服务器的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文
在IT行业中,下载服务器文件到本地以及在下载后删除服务器上的源文件是一项常见的操作,尤其在数据迁移、备份或更新场景下。以下是一些相关的知识点: 1. **FTP(File Transfer Protocol)**:FTP是最传统的文件...
### Shell脚本实现本地文件与服务器文件同步 #### 背景与意义 在软件开发过程中,经常需要将本地开发环境中的文件同步到服务器上进行部署或测试。手动上传不仅耗时而且容易出错,因此编写一个自动化脚本来实现文件...
综上所述,这篇文章可能涵盖的内容包括:使用JavaScript发起HTTP请求获取服务器文件,处理响应的`blob`数据,生成可下载的链接,以及可能提及的服务器端工具如Apache Ant和Apache Commons IO的作用。通过这些技术,...
总的来说,本地与服务器之间的文件更新是通过自动更新机制实现的,它涉及到文件的检测、下载、校验、安装和刷新等多个步骤。而文件对比则优化了这一过程,仅传输必要的变化,提高了效率。了解并掌握这一技术对于保持...
Java 实现对比ftp文件和本地文件的修改时间 ftp服务器文件比本地文件新时 把服务器文件下载覆盖本地文件 更新本地文件
在VB(Visual Basic)编程中,上传本地文件到服务器是一个常见的任务,特别是在开发Web应用程序时。这个过程涉及客户端(用户计算机)与服务器之间的数据交互,通常通过HTTP协议完成。以下是对这一主题的详细阐述: ...
**下载Linux服务器文件** 下载文件的过程与上传类似,只是使用了`get()`方法。该方法会将服务器上的文件下载到本地。 ```java sftp.get(远程文件路径, 本地保存路径); ``` **删除Linux服务器文件** 删除文件可以...
在这个场景中,我们将探讨如何使用PUTTY自动将服务器上的备份文件取到本地。 首先,理解SSH协议是关键。SSH提供了一种加密的网络通信方式,确保数据传输的安全性。PUTTY基于此协议,通过输入服务器的IP地址、端口号...
在这个场景中,我们使用VC2015(Visual C++ 2015)开发环境,通过FTP来实现服务器文件与本地文件的同步。这个过程主要包括两个核心部分:文件的检查和文件的下载。 首先,我们需要理解FTP的工作原理。FTP使用TCP...
在这个Windows版本中,Finalshell提供了简单易用的界面,使得上传和下载文件到服务器或本地计算机变得异常轻松。 1. **文件传输**: - **上传文件**:Finalshell支持用户直接从本地文件系统选择文件或文件夹,通过...
本项目聚焦于如何将本地文件夹中的文件上传到FTP服务器的特定目录,这在网站更新、数据迁移或备份场景中尤其有用。我们将探讨相关的知识点,并提供一些基础的实现方法。 1. FTP基本概念:FTP是一种基于TCP的应用层...
本篇文章将深入探讨“本地文件管理、上传至服务器、服务器文件管理”这一主题,以及如何利用FTP协议进行文件上传。 首先,本地文件管理是计算机操作的基础。在Windows、macOS或Linux等操作系统中,都有内置的文件...
使用JavaScript实现文件上传到本地服务器并获取到上传后文件所在路径,是由到JavaScript,java以及html页面。这个比较好,不是在jsp上获取路径,jsp太简单了,而且过时了,所以就在html页面实现了下功能,我主要是做...
通过将服务器文件系统映射到本地,用户可以在本地操作系统上直接编辑和管理远程服务器上的文件,而无需频繁地通过FTP或其他文件传输协议手动上传和下载。本教程将详细解释如何实现这一功能,主要依赖于WinSSHFS工具...
【标题】"SFTP定时扫描本地文件上传到Linux服务器"涉及的关键知识点主要集中在SFTP(Secure File Transfer Protocol)协议的使用、文件系统的监控以及自动化任务的执行。SFTP是一种安全的网络协议,用于在不同主机...
在Node.js环境中,将本地文件上传到服务器是一个常见的任务,主要应用于文件共享、数据备份、内容发布等场景。本文将详细讲解如何使用Node.js实现这一功能。 首先,我们需要理解Node.js的基本概念。Node.js是一个...
2、检查服务器上是否存在,不存在直接上传,存在的话,文件夹无视,文件比较大小,大小不一致则覆盖,最后检查服务器上是否存在本地没有的文件,存在则删除 3、之后增加了忽略列表,忽略文件类型 4、然后增加了重启...
4. **文件流操作**:为了将接收到的数据保存到本地文件,我们需要使用`FileStream`类创建一个到本地文件的流,然后使用`Stream.CopyTo()`方法将网络流的数据复制到本地文件流。 5. **进度更新与错误处理**:为了...