`
angelguo
  • 浏览: 121279 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python脚本–下载合并SAE日志

 
阅读更多

调用API获得下载地址

文档位置在这里

设置自己的应用和下载参数

请求中需要设置的变量如下

api_url = 'http://dloadcenter.sae.sina.com.cn/interapi.php?'
appname = 'xxxxx'
from_date = '20140101'
to_date = '20140116'
url_type = 'http' # http|taskqueue|cron|mail|rdc
url_type2 = 'access' # only when type=http  access|debug|error|warning|notice|resources
secret_key = 'xxxxx'

生成请求地址

请求地址生成方式可以看一下官网的要求:

  1. 将参数排序
  2. 生成请求字符串,去掉&
  3. 附加access_key
  4. 请求字符串求md5,形成sign
  5. 把sign增加到请求字符串中

具体实现代码如下

params = dict()
params['act'] = 'log'
params['appname'] = appname
params['from'] = from_date
params['to'] = to_date
params['type'] = url_type

if url_type == 'http':
    params['type2'] = url_type2

params = collections.OrderedDict(sorted(params.items()))

request = ''
for k,v in params.iteritems():
    request += k+'='+v+'&'

sign = request.replace('&','')
sign += secret_key

md5 = hashlib.md5()
md5.update(sign)
sign = md5.hexdigest()

request = api_url + request + 'sign=' + sign

if response['errno'] != 0:
    print '[!] '+response['errmsg']
    exit()

print '[#] request success'

下载日志文件

SAE将每天的日志文件都打包成tar.gz的格式,下载保存下来即可,文件名以日期.tar.gz命名

log_files = list()

for down_url in response['data']:    
    file_name = re.compile(r'\d{4}-\d{2}-\d{2}').findall(down_url)[0] + '.tar.gz'
    log_files.append(file_name)
    data = urllib2.urlopen(down_url).read()
    with open(file_name, "wb") as file:
        file.write(data)

print '[#] you got %d log files' % len(log_files)

合并文件

合并文件方式用trafile库解压缩每个文件,然后把文件内容附加到access_log下就可以了

# compress these files to access_log
access_log = open('access_log','w');

for log_file in log_files:
    tar = tarfile.open(log_file)
    log_name = tar.getnames()[0]
    tar.extract(log_name)
    # save to access_log
    data = open(log_name).read()
    access_log.write(data)
    os.remove(log_name)

print '[#] all file has writen to access_log'

代码下载地址

github

分享到:
评论

相关推荐

    Python脚本实现下载合并SAE日志

    还好SAE提供了API可以批量获得日志文件下载地址,刚刚写了python脚本自动下载和合并这些文件 调用API获得下载地址 文档位置在这里 设置自己的应用和下载参数 请求中需要设置的变量如下 复制代码 代码如下: api_url =...

    批量合并GDB的python脚本

    arcmap-数据处理-批量合并GDB的python脚本

    面向Arcgis的python脚本编程

    1. Python基础:Python是用于编写脚本的首选语言之一,其简洁明了的语法和丰富的库支持使得编写GIS脚本变得简单。了解Python的基本语法,如变量、数据类型、控制结构(如循环和条件语句)、函数定义以及错误处理,是...

    0-SecureCRT运行Python脚本.pdf

    本文主要介绍了SecureCRT这款软件如何运行Python脚本来测试IoT-WiFi模块,涉及的主题包括SecureCRT的基本使用、Python脚本的执行、以及SecureCRT中实现的Python脚本的常用方法。 首先,文章的前言部分提到,对于...

    c语言调用python脚本

    安装Python解释器:首先需要确保系统中安装了Python解释器,可以从Python官方网站下载并安装。 编写Python脚本:创建一个包含所需功能的Python脚本文件。例如,假设有一个名为"script.py"的Python脚本,其中包含了...

    下载Android源代码的Python脚本

    下载Android源代码的Python脚本,原文的链接: http://blog.csdn.net/a_flying_bird/article/details/25505019 直接从网页上拷贝Python代码的时候,每行前面会多4个空格,导致脚本没法执行。为此,还需要编一个小...

    C++调用PYthon脚本(例程)

    本资源“C++调用Python脚本(例程)”提供了一个完整的工程实例,演示了如何在C++程序中动态地调用Python脚本,使得C++能够利用Python的灵活性和便利性。 在C++中调用Python脚本主要有两种方法:一种是通过Python的...

    批量合并MDB的python脚本

    批量合并MDB的python脚本

    基于 selenium 自动注册apple id的python 脚本(下载即用).zip

    基于 selenium 自动注册apple id的python 脚本(下载即用).zip 1.浏览器模拟提交表单。 完成 2.自动输入表单信息。 完成 3.判断图片验证码。(识别验证码没实现,现在是保存验证码图片,并手动在控制台输入。 ...

    C++调用Python脚本

    在IT领域,有时候我们需要在不同的编程语言之间进行交互,例如在C++中调用Python脚本,以便利用Python丰富的库和便利性。本篇将详细解释如何在C++环境中使用Qt框架来调用Python脚本,并提供一些关键知识点。 首先,...

    excel自动格式化python脚本

    excel自动格式化python脚本 excel自动格式化python脚本 excel自动格式化python脚本 excel自动格式化python脚本 excel自动格式化python脚本 excel自动格式化python脚本 excel自动格式化python脚本 excel自动格式化...

    统信桌面操作系统PXE部署Python脚本

    在实际操作中,Python脚本还可以集成错误处理和日志记录功能,确保部署过程的稳定性和可追踪性。例如,当下载或配置过程中发生错误时,脚本应能够捕获异常并生成日志,帮助管理员定位问题。 总之,通过使用Python...

    Slicer官网Python脚本编程教程整理.zip

    3dSlier是一款医学图像处理的软件...因为最近在学习3DSlicer 的Python脚本编程,但是却因为官网的教程太过于零散而感到苦恼,所以特意仔细的整理了3Dslicer官网上有关Python脚本编程的资料。贡献出来,供大家使用学习。

    大麦网抢票脚本【Python脚本】

    Python脚本,使用Selenium 模拟浏览器操作。 在使用 Chrome 浏览器,用户可以使用鼠标滑动、按键点击以及键盘输入,作为信号输入设备向浏览器传达指令,浏览器收到指令后执行渲染。 这里提到的 Selenium WebDriver ...

    SecureCRT python 脚本

    很好的python脚本,如何用CRT工具开启serial,命令交互等!

    金蝶云星空、金蝶云苍穹调试python脚本环境搭建IronPython

    关于标签,"python"代表了我们讨论的是Python编程语言,"金蝶云"强调了应用场景,而"调试"则说明了主题的核心——如何在金蝶云环境中对Python脚本进行问题排查和性能优化。 在压缩包文件名称列表中,"IronPytho

    IronPython-2.7.7.msi 金蝶云 调试python脚本环境搭建。

    在实际操作中,首先,你需要下载并安装IronPython 2.7.7的MSI文件。安装过程中,系统会自动添加必要的环境变量,使得命令行或者IDE能够识别IronPython。接着,确保你已经安装了Visual Studio 2013,并且配置好Python...

    shell脚本中执行python脚本并接收其返回值的例子

    1.在shell脚本执行python脚本时,需要通过python脚本的返回值来判断后面程序要执行的命令 例:有两个py程序 hello.py 代码如下: def main():  print “Hello” if __name__==’__main__’:  main() world.py def ...

Global site tag (gtag.js) - Google Analytics