本脚本通过阿里云自己封装的SDK包来获取RDS数据库实例的备份列表
安装如下模块:
1 2 3 4 |
pip install aliyunsdkcore pip install aliyunsdkrds pip install prettytable |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
#!/usr/bin/env python # -*- coding: utf-8 -*- #created on Jun 19 2017 #@author: flyfish import datetime import sys import json from aliyunsdkcore import client from aliyunsdkrds.request.v20140815 import DescribeBackupsRequest from prettytable import PrettyTable #确认时间和调用阿里云API Date = datetime.date.today() _ISO8601_DATE_FORMAT = "%Y-%m-%dT00:00Z" def start(): utcTime = datetime.date.today() - datetime.timedelta(days=7) #获取当前7天的备份 #utcTime = datetime.datetime.today().replace(hour=0,minute=0,second=0) - datetime.timedelta(hours=120) return utcTime.strftime(_ISO8601_DATE_FORMAT) def end(): utcTime = datetime.date.today() - datetime.timedelta(hours=-8) #utcTime = datetime.datetime.today().replace(hour=0,minute=0,second=0) - datetime.timedelta(hours=1) return utcTime.strftime(_ISO8601_DATE_FORMAT) def utc2local(utctime): dt = datetime.datetime.strptime(utctime,"%Y-%m-%dT%H:%M:%SZ") + datetime.timedelta(hours=8) return dt startTime = start() endTime = end() ak = 'access key' secret = 'access key secret' region_id = '区域ID' class RDSBaklist(object): def __init__(self,dbinstanceid): self.clt = client.AcsClient(ak,secret,region_id) self.DBInstanceId=dbinstanceid def bakuplist(self): request = DescribeBackupsRequest.DescribeBackupsRequest() request.set_accept_format('json') request.set_PageSize('100') request.set_StartTime(startTime) request.set_EndTime(endTime) request.set_DBInstanceId(self.DBInstanceId) #result = self.clt.do_action(request) result = self.clt.do_action_with_exception(request) bakuplist = json.loads(result) bakupinfo = bakuplist["Items"]["Backup"] pt = PrettyTable(["备份片ID","备份开始时间","备份结束时间","备份片容量(MB)","备份方式","备份状态"]) pt.align["备份片ID"] = "l" pt.padding_width = 2 print "最新备份集ID:" for bakup in bakupinfo: bakupid = bakup['BackupId'] if bakupid: print bakupid backupstarttime = bakup['BackupStartTime'] backupendtime = bakup['BackupEndTime'] bakupsize = bakup['BackupSize']/1024/1024 bakupmethod = bakup['BackupMethod'] backupstatus = bakup['BackupStatus'] pt.add_row([bakupid,utc2local(backupstarttime),utc2local(backupendtime),bakupsize,bakupmethod,backupstatus]) print "最新备份集列表清单:" print pt if __name__ == '__main__': DBInstanceId = sys.argv[1] rds = RDSBaklist(DBInstanceId) rdsbakuplist = rds.bakuplist() |