Python脚本导出AWS EC2资源清单

摘要:
环境需求单位现在每隔一段时间需要核对一下AWS正在运行的EC2资源清单,为了避免核对失误以及重复性的工作,打算用脚本来解决这一重复性的工作。

环境需求

单位现在每隔一段时间需要核对一下 AWS 正在运行的 EC2 资源清单,为了避免核对失误以及重复性的工作,打算用脚本来解决这一重复性的工作。大概思路为 通过 AWS AK、SK 来索取 AWS EC2 list 的权限,然后通过 Python 把正在运行的 EC2 实例筛选出来,然后提取出来想要的一些内容 写入到 CSV 表格中,通过附件的方式发送到邮箱中.

运行脚本所需

Python3、pip3

Python3 所需模块

boto3
csv
codecs
smtplib

脚本内容

#!/usr/bin/python
#-*-coding:UTF-8-*-
importboto3
importcsv
importcodecs
importsmtplib
fromemail.mime.textimportMIMEText
fromemail.mime.multipartimportMIMEMultipart
fromsmtplibimportSMTP
ec2=boto3.client(
'ec2',
aws_access_key_id="AKIAUO5xxxxxxxxxxxxxxxxxxx",
aws_secret_access_key="0wcg69IbHT/5xxxxxxxxxxxxxxxxxxxxxx",
region_name='cn-north-1',
)
response=ec2.describe_instances()
withopen("/home/bsh/scripts/running.csv","w",encoding="utf-8",newline="")ascsvf:
writer=csv.writer(csvf)
csv_head=["Uptime","Project","InstanceName","InstanceID","PublicIP","PriviteIP","KeyName","State"]
writer.writerow(csv_head)
foriinresponse['Reservations']:
ifi['Instances'][0]['State']['Name']=='running':
forjini['Instances']:
if'PublicIpAddress'notinj:
j['PublicIpAddress']=""
if'Tags'notinj:
j['Tags']=[]
if'InstanceId'notinj:
j['InstanceId']=[]
if'KeyName'notinj:
j['KeyName']=[]
print(j['Tags'])
fordicinj['Tags']:
ifdic['Key']=='Name':
print(dic['Value'])
v=dic['Value']
fordicinj['Tags']:
ifdic['Key']=='Project':
print(dic['Value'])
p=dic['Value']
row_cvs=[j['LaunchTime'],p,v,j['InstanceId'],j['PublicIpAddress'],j['PrivateIpAddress'],j['KeyName'],'running']
writer.writerow(row_cvs)
print(j['LaunchTime'],p,v,j['InstanceId'],j['PublicIpAddress'],j['PrivateIpAddress'],j['KeyName'],'running')
mailto_list=['xuewenlong93@189.com']
mail_host="smtp.189.cn"
mail_user="xuewenlong93@189.cn"
mail_pass="xxxx"
defmake_mpa_msg():
email=MIMEMultipart('alterbative')
text=MIMEText(open('/home/bsh/scripts/running.csv','rb').read(),'base64','utf-8')
text["Content-Disposition"]='attachment;filename="running.csv"'
email.attach(text)
returnemail
defsend_mail(to_list,sub,content):
me="awsEC2"+"<"+mail_user+">"
msg=make_mpa_msg()
msg['Subject']=sub
msg['From']=me
msg['To']=";".join(to_list)
try:
server=smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user,mail_pass)
server.sendmail(me,to_list,msg.as_string())
server.close()
returnTrue
exceptExceptionase:
print(str(e))
returnFalse
foriinrange(1):#发送1封
ifsend_mail(mailto_list,"awsec2list","msg.as_string()"):
print('发送成功')
else:
print('发送失败')
[root@ip-10-0-10-243scripts]#pythonawsout.py
发送成功
[root@ip-10-0-10-243scripts]#

Python脚本导出AWS EC2资源清单第1张
Python脚本导出AWS EC2资源清单第2张

免责声明:文章转载自《Python脚本导出AWS EC2资源清单》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Window下的git配置文件在哪里【图文】Android开发 WebView的详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Python之路】特别篇--ECMA对象、DOM对象、BOM对象

ECMA对象从传统意义上来说,ECMAScript 并不真正具有类。事实上,除了说明不存在类,在 ECMA-262 中根本没有出现“类”这个词。 ECMAScript 定义了“对象定义”,逻辑上等价于其他程序设计语言中的类。 var o = new Object(); 对象的概念与分类: 由ECMAScript定义的本地对象.独立于宿主环境的 ECMAS...

Jenkins自动执行python脚本输出测试报告

前言 在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作。 借助Jenkins,我们可以结合 Git/SVN 自动拉取代码,可以设置定时构建,接着就可以定时触发执行脚本,得到并查看测试报告,最后还可以配置发送邮件等。 今天我们就来学习下,如何结合 Git/SVN 自动拉取代码...

使用Python批量修改文件名

使用os.rename(fold,newfilename)对文件重命名 #coding:utf-8 importos filename_list = os.listdir('./') for filename infilename_list: str_reverse = filename[::-1] #使用切片反转 apxstart...

python 获取天气信息

【说明】接口为聚合数据接口。API使用说明: 实现代码: import requests,json def main(): #参数 farmat=1 cityname = input("请输入你想查询的城市天气:") key='621043608cb9e7f7f485461ef9e5adef' get_weat...

分享教程:搜索网站里的图片,检查是否是无效图片。

目前组里面测试新同学很多时候不知道如何将自己学的编码知识和测试场景实际结合起来,这里拿1个实际例子,分析下过程。 拿到1个需要编码的测试需求,怎么做 测试需求:公司网站里面商品图片很多是无效链接,检查搜索出来,进行进一步处理。 一,思考:首先想下怎么做? 思路:搜索出所有图片链接----->访问这些链接,查看response------->...

电子公文传输系统团队项目——团队展示

团队成员 20181202 李祎铭 20181209 沙桐 20181215 薛胜瀚 20181216 杨越麒 20181221 曾宇涛(队长) 20181223 何家豪 20181232 冶廷瑞 队名 七侠传 团队项目介绍 电子公文传输系统 队员风采 曾宇涛 代号:长虹剑剑主 风格:沉着冷静 擅长技术:python,php,html 编程兴趣:前端...