调用API接口下载腾讯CDN访问日志

公司使用腾讯cdn为网站静态内容加速,由于业务需求,需要每天下载昨天的日志(因为腾讯方面给出回复,访问日志会有2个小时或以上时间的延迟,所以不建议下载当天日志,所以每天统计前一天的日志以做分析)。因为cdn是由运维来管理,但是这个需求是业务的,如果每天都由运维进行下载,再通过邮件或其他工具发送,可能就显得麻烦。所幸腾讯CDN提供了API接口,因此采用shell脚本调用API进行下载的方式,定期下载日志,这样只要业务人员运行这个脚本就能自行下载日志,解放了运维的工作。

#!/bin/bash
#########################################################
#This script is to download yesterday‘s log #files in Telent CDN
#writed on 2016-08-11 
#########################################################
Timestamp=`date +%s`
Nonce=$RANDOM
LastDay=`date -d "yesterday" +%Y%m%d`
Domain=xxxxxxxxxxxxxxxxx      #此处为你需要下载日志的域名
ID=xxxxxxxxxxxxxxxxx          #此处为你在腾讯cdn上的secretId
key=xxxxxxxxxxxxxxxxx         #此处为你在腾讯cdn上的secretKey,可以在腾讯cdn后台生成
SURL="GETcdn.api.qcloud.com/v2/index.php?Action=GenerateLogList&Nonce=${Nonce}&SecretId=${ID}&Timestamp=${Timestamp}&hostId=xxxxxx"  #hostId为你的域名的id,可通过腾
                          #讯提供的php脚本查看,当然也可以使shell或pythonsigure=`echo -n $SURL | openssl sha1 -binary -hmac "${key}" | base64|sed ‘s/=/%3D/g;s/+/%2B/g;s/\//%2F/g‘`
HTTP_SURL=`echo -n $SURL | sed s#^GET#HTTPS://#`
Cur_URL=`echo "${HTTP_SURL}&Signature=${sigure}"`
Log_URL=`curl -s -l --url $Cur_URL|sed  ‘s/},{/\n/g‘|grep "$LastDay"|awk -F‘"‘ ‘{print $14}‘|sed -e ‘s#\\\/#\/#g‘`
#echo $Log_URL
cd $HOME
if [ -d ./cdnlogs/$LastDay ] 
then 
     cd ./cdnlogs/$LastDay 
else 
     mkdir -p ./cdnlogs/$LastDay && cd ./cdnlogs/$LastDay
fi
if [ -f $LastDay-$Domain.gz ]
then
     echo "The file was exist now."
     exit 127
else
   
        wget -q -O $LastDay-$Domain.gz  $Log_URL >>/dev/null 2>&1
        
        if [ $? -eq 0 ]
             then 
                   echo -e  "\033[32mDownload log file successful.\033[0m"
             else 
                   echo -e "\033[31mDownload log file failed.\033[0m"
        fi
fi

资料参考:

https://www.qcloud.com/doc/api/231/3950

补充:在SURL中的接口参数是区分大小写的,因为在调试的时候hostId写成了hostid,大概调试了快一个小时都是错误4000,invalid parameter,这点需要注意。

https://github.com/QcloudApi/qcloudapi-sdk-php 如果会php的话,这里有现成的,可惜我不会,唉~

时间: 2024-10-03 21:30:35

调用API接口下载腾讯CDN访问日志的相关文章

zabbix调用api接口批量添加主机

zabbix调用api接口批量添加主机,这里用的是python 2.7(需安装xlrd模块处理表格). (1)到官网下载xlrd模块:https://pypi.python.org/pypi/xlrd (2)解压压缩包:tar xvf xlrd-1.0.0.tar.gz(3)进入到解压的文件夹运行python setup.py install命令安装 1.整理一个excel表格(test.xlsx),格式如下: 2.addhost.py脚本,添加主机名.显示名称.dns主机名.群组.模板字段(网

C# 调用API接口处理公共类 自带JSON实体互转类

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using System.Web; n

Python调用API接口的几种方式

相信做过自动化运维的同学都用过API接口来完成某些动作.API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课. 本文主要介绍python中调用API的几种方式,下面是python中会用到的库. - urllib2 - httplib2 - pycurl - requests urllib2 import urllib2, urllib github_url = 'https://api.github.com/user/repos' password_manage

调用API接口,查询手机号码归属地

使用https://www.juhe.cn/提供的接口,查询归属地 在官网注册key即可使用. 代码如下 #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib, sys from urllib import urlencode, urlopen reload(sys) sys.setdefaultencoding('utf8') #调用接口,获取结果为二维字典 def getPageCode(url, params): par

怎么调用api接口

api的简单调用,调用api的方法 方法一:用前端方法调用api 完整代码: 1 <!DOCTYPE html> 2 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>Title</title> 7 </head> 8 <style> 9 10 </style> 11 <body&

MVC代码中如何调用api接口

关于代码解释,为了方便读者浏览时更好理解代码的含义,我把注释都写在代码里面了.因为一开始我只考虑到功能上的实现并没有考虑代码的优化所以代码我就全写在一个页面了.至于那些生成扑克牌类.计算类等代码优化方面的内容就留给想要实现这个24点算法游戏的读者自己去完善吧. 可直接访问.对于一些获取数据操作不影响系统正常运行的和数据的,多余的验证是没有必要的,这个时候可以直接访问,例如获取当天的天气预报信息,获取网站的统计信息等. 基本上每次做页面,都会有这么一个效果,所以预先准备几个这样的效果,会很有用处,

PHP调用API接口实现天气查询功能

天气预报查询接口API,在这里我使用的是国家气象局天气预报接口 使用较多的还有:新浪天气预报接口.百度天气预报接口.google天气接口.Yahoo天气接口等等. 1.查询方式 根据地名查询各城市天气情况 2.请求URL地址http://route.showapi.com/9-2 3.接口参数说明: 一.系统级参数(所有接入点都需要的参数): 二.应用级参数(每个接入点有自己的参数): 4.返回参数 以JSON格式返回结果 1)系统级参数(所有接入点都会返回的参数) 2)应用级参数(系统级输出参

zabbix 二次开发之调用api接口获取历史数据

前面一篇写了数据同步和模板绑定,zabbix其实能做的事还蛮多. zabbix提供了一个非常好的前端展示页面,但是我们总觉得不太好看:我们可以进一步调用他的api通过获取每一个监控项的历史数据,然后打到我们的监控平台上:主流的有rrdtool方式和highcharts方式:rrdtool略显复杂,还要学习rrdtool之类的几个聚合方式.相对而言我更喜欢highcharts的方式,出图简便,只需要提供数据和时间戳组成的json数据就够了,之前也介绍过具体:那么这里我们先拿出我们想要的数据. za

调用api,下载图片

import requests,json import urllib url='http://apis.baidu.com/txapi/mvtp/meinv' path='F:\\screen\\baidu\\' headers={'apikey':XXXX} page_links=[] names=[] def get_url(num): payload={'num':num} page=requests.get(url,params=payload,headers=headers) data