{{ ttime }}月 AWS 賬單
#遍歷后臺渲染內(nèi)容 {% for t in list_res %}{{ t.1 }} |
|||
---|---|---|---|
{{ i.0 }} | {{ i.1 }} | {{ i.2 }} | |
{{ t.3 }}:?{{ t.2 }} |
1、為了方便財(cái)務(wù)部分查看個賬戶支出詳情,通過計(jì)劃任務(wù)每天發(fā)送賬單情況
python 代碼如下:
# coding:utf-8
from django.db.models import Q
from jumpserver.api import *
from jumpserver.models import Setting
from django.http import HttpResponse,StreamingHttpResponse
from django.shortcuts import render,render_to_response
from jcloud.aws_iam_scan import *
from jcloud.aws_service_san import *
from jcloud.forms import Aws_monitor_userForm
from jcloud.models import *
import json
import django.utils.timezone as timezone
import time
from datetime import date, timedelta
import boto3
import zipfile
import zlib
import os
import csv
import codecs
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from django.template import loader
from pprint import pprint
def sendmail():
def sendaction(html):#定義發(fā)送方法
HOST = "smtp.exmail.qq.com"
TO = "email"
FROM = "email"
msg = MIMEText(html_content,"html","utf-8")
msg['Subject'] = u'AWS云主機(jī)賬單'
msg['From']=FROM
msg['To']=TO
try:
server = smtplib.SMTP()
server.connect(HOST,"587")
server.starttls()
server.login("user","password")
server.sendmail(FROM, TO, msg.as_string())
server.quit()
print "郵件發(fā)送成功!"
except Exception, e:
print "失?。?+str(e)
def rescount(accout_tag):#查詢賬戶數(shù)量和服務(wù)分類
aws_volumes_list = Aws_volumes.objects.filter(account_tag=accout_tag)
aws_snapshots_list = Aws_snapshots.objects.filter(account_tag=accout_tag)
aws_s3_list = Aws_s3.objects.filter(account_tag=accout_tag)
aws_ec2_list = Aws_ec2.objects.filter(account_tag=accout_tag)
aws_rds_list = Aws_rds.objects.filter(account_tag=accout_tag)
aws_detail = Aws_detail_price.objects.filter(account_tag=accout_tag)
ddict = {}
for d in aws_detail:#遍歷所有收費(fèi)項(xiàng)目,分別累加不同服務(wù)價(jià)格
ddict[d.service_id] = d.aws_price
list_volume = []#卷使用價(jià)格
t_volume = float(0)
for volume in aws_volumes_list:
if volume.VolumeId in ddict.keys():
t_volume = t_volume + float(ddict[volume.VolumeId])
del(ddict[volume.VolumeId])
list_volume.append('volume')
list_volume.append(len(aws_volumes_list))
list_volume.append(t_volume)
# print list_volume
list_snapshots = []#快照價(jià)格
t_snapshots = float(0)
for key in ddict.keys():
for snapshots in aws_snapshots_list:
if re.search(snapshots.SnapshotId,key):
t_snapshots = t_snapshots + float(ddict[key])
del(ddict[key])
list_snapshots.append('snapshots')
list_snapshots.append(len(aws_snapshots_list))
list_snapshots.append(t_snapshots)
# print list_snapshots
list_s3 = []#s3價(jià)格
t_s3 = float(0)
for s3 in aws_s3_list:
if s3.Name in ddict.keys():
t_s3 = t_s3 + float(ddict[s3.Name])
del(ddict[s3.Name])
list_s3.append('s3')
list_s3.append(len(aws_s3_list))
list_s3.append(t_s3)
# print list_s3
list_ec2 = []#ec2價(jià)格
t_ec2 = float(0)
for ec2 in aws_ec2_list:
if ec2.InstanceId in ddict.keys():
t_ec2 = t_ec2 + float(ddict[ec2.InstanceId])
del(ddict[ec2.InstanceId])
list_ec2.append('ec2')
list_ec2.append(len(aws_ec2_list))
list_ec2.append(t_ec2)
# print list_ec2
list_rds = []#rds 價(jià)格
t_rds = float(0)
for rds in aws_rds_list:
if rds.DBInstanceArn in ddict.keys():
t_rds = t_rds + float(ddict[rds.DBInstanceArn])
del(ddict[rds.DBInstanceArn])
list_rds.append('rds')
list_rds.append(len(aws_rds_list))
list_rds.append(t_rds)
# print list_rds
list_other = []#其他價(jià)格
o_price = float(0)
for o in ddict.keys():
o_price = o_price + float(ddict[o])
list_other.append('Others')
list_other.append(len(ddict))
list_other.append(o_price)
# print list_other
tmp_list = []
tmp2_list = []
sprice = float(0)
for l in [list_ec2,list_volume,list_s3,list_rds,list_snapshots,list_other]:
sprice = sprice + l[2]
tmp_list.append(l)
tmp2_list.append(tmp_list)
tmp2_list.append(dict_tag[accout_tag])
tmp2_list.append(sprice)
if accout_tag == 1:
tmp2_list.append("RMB")
else:
tmp2_list.append("Dollar")
list_res.append(tmp2_list)
dict_tag = {}#區(qū)分不同賬戶資源
dict_tag[1] = '中國:ptmind'
dict_tag[2] = '海外:administrator'
list_res = []
for tag in dict_tag.keys():
rescount(tag)
ttime = time.strftime('%m',time.localtime(time.time()))
html_content = loader.render_to_string('jcloud/sendmail.html',locals())
# print html_content
# return my_render('jcloud/sendmail.html', locals(), request)
# print html_content
sendaction(html_content)
發(fā)送頁面sendmail.html內(nèi)容如下:
{{ ttime }}月 AWS 賬單
#遍歷后臺渲染內(nèi)容
{% for t in list_res %}
{{ t.1 }}
{% for i in t.0 %}
{{ i.0 }}
{{ i.1 }}
{{ i.2 }}
{% endfor %}
{{ t.3 }}:?{{ t.2 }}
{% endfor %}
最后展示效果如下:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。