Python脚本导出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 -*-
import boto3
import csv
import codecs
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from smtplib import SMTP
ec2 = boto3.client(
'ec2',
aws_access_key_id="AKIAUO5xxxxxxxxxxxxxxxxxxx",
aws_secret_access_key="0wcg69IbHT/5xxxxxxxxxxxxxxxxxxxxxx",
region_name='cn-north-1',
)
response = ec2.describe_instances()
with open("/home/bsh/scripts/running.csv", "w", encoding="utf-8", newline="") as csvf:
writer = csv.writer(csvf)
csv_head = ["Up time", "Project", "Instance Name", "Instance ID", "Public IP", "Privite IP", "Key Name", "State"]
writer.writerow(csv_head)
for i in response['Reservations']:
if i['Instances'][0]['State']['Name'] == 'running':
for j in i['Instances']:
if 'PublicIpAddress' not in j:
j['PublicIpAddress'] = ""
if 'Tags' not in j:
j['Tags'] = []
if 'InstanceId' not in j:
j['InstanceId'] = []
if 'KeyName' not in j:
j['KeyName'] = []
print(j['Tags'])
for dic in j['Tags']:
if dic['Key'] == 'Name':
print(dic['Value'])
v = dic['Value']
for dic in j['Tags']:
if dic['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"
def make_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)
return email
def send_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()
return True
except Exception as e:
print (str(e))
return False
for i in range(1): #发送1封
if send_mail(mailto_list,"awsec2list","msg.as_string()"):
print ('发送成功')
else:
print ('发送失败')
[root@ip-10-0-10-243 scripts]# python awsout.py
发送成功
[root@ip-10-0-10-243 scripts]#


Python脚本导出AWS EC2资源清单的更多相关文章
- 【原创】导出aws ec2为csv
1.安装 pip install boto3 csv 2.使用脚本更新秘钥和地区 # 导出aws ec2列表为cvs import boto3 import csv ec2 = boto3.cl ...
- 如何把Python脚本导出为exe程序
一.pyinstaller简介 pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行 最新版是pyinstaller 3.1.1.支持python2.7和py ...
- (转)Python_如何把Python脚本导出为exe程序
原文地址:https://www.cnblogs.com/robinunix/p/8426832.html 一.pyinstaller简介 Python是一个脚本语言,被解释器解释执行.它的发布方式: ...
- <小白学技术>将python脚本导出为exe可执行程序
1.简介(为啥需要导出为exe可执行程序) python写完的程序靠命令来执行,显得太专业,不符合python简单的特点(好吧,主要是太low) 代码给别人执行,别人没有你的python库也没法用(双 ...
- 使用 bash 脚本把 AWS EC2 数据备份到 S3
目录 一.IAM 秘钥授权方式(普通) 1.1.打开 IAM 1.2.添加用户 1.3.安装和配置 AWS CLI 1.4.配置授权 二.IAM 角色授权方式(安全) 2.1.创建一个 EC2 访问 ...
- postman---postman导出python脚本
前面一直写关于postman的一些文章,大家现在都应该简单了解,其实postman还有许多的功能,这个要大家一点点的挖掘出来了,安静在给大家分享一个关于postman导出python脚本 Postma ...
- 十二、导出python脚本
一.为什么要导出? 导出成多语言脚本,方便二次开发 使用其他语言的test runner 使用自己最熟悉的语言做接口自动化测试 二.导出成python脚本 演示 导出成python的requesy脚本 ...
- 使用python脚本从数据库导出数据到excel
python从数据库导出数据到excel 最近需要从数据库里导出一些数据到excel,刚开始我是使用下面的命令 select * from xxx where xxx into outfile 'xx ...
- 10、 导出python脚本进行数据驱动的接口测试
postman自带脚本导出功能,对于代码小白来说,可以不错的学习代码级接口测试 第一步:输入接口地址,点击send 第二步:点击code,导出脚本文件,为python脚本 第三步:安装python3以 ...
随机推荐
- Android开发在Activity外申请权限调用相机打开相册
问题描述: 最近在项目中遇到一个需要调用相册和打开相机的需求,但是,在Android 6.0以后,调用相册属于危险权限,需要开发者动态获取,这就意味着我们申请权限是与Activity绑定的,但如果一个 ...
- 桌面小部件AppWidgetProvider简单分析
1.一般桌面小部件涉及到的类 AppWidgetProvider :BroadcastRecevier子类,用于接收更新,删除通知 AppWidgetProvderInfo:AppWidget相关信息 ...
- 软件安装管理(RPM)
目录 一.linux应用程序 1.1 应用程序与系统命令关系 1.2 典型应用程序的目录结构 1.3 常见的软件包封装工具 二.RPM软件包管理工具 2.1RPM软件包管理器Red-Hat Packa ...
- Excel VBA活动抽奖小程序
在活动中,我们常会有抽奖,抽奖箱准备繁琐,现在多采用线上抽奖方式,下面用Excel VBA写了一个简单的抽奖小程序 简单测试效果如下,可实现: 多次抽奖,且每次抽奖都不重复 抽奖界面滚动人员信息,点击 ...
- IIS短文件名漏洞原理与挖掘思路
首先来几个网址先了解一下 https://www.jb51.net/article/166405.htm https://www.freebuf.com/articles/web/172561.htm ...
- 从理发店小弟到阿里P10大牛,一位高中学渣的“登天”之路
蚂蚁金服,可能是众多程序猿眼中梦寐以求的归宿,无数拿过数不清奖状的各个高校走出的学子精英都挤破头皮,只为能在蚂蚁占有一席之地. 蚂蚁金服里不乏各种深藏不露的大佬,到了那里才会深刻明白一山还有一山高这句 ...
- 5年Android开发诉苦:47天21家面试,半年空档期觉得整个人生都被毁了
近日,我在逛某社交论坛时,发现一位做了五年的Android开发将自己这段时间的所有面试经历发表了出来,根据网友自己提供的信息显示,主要面试的地点都在北京,上海等地. 微软和亚马逊刚面试完一面,都是以算 ...
- kong整合Cosul实践(3)
1. 准备工作: 需要.netcore或者java程序一套,引入consul第三方包 我这里搭建了一个.netcore的webapi项目,引入Consul第三方包,网上可查资料一堆 环境需要kong, ...
- 跟我一起写 Makefile(十四)
使用make更新函数库文件 ----------- 函数库文件也就是对Object文件(程序编译的中间文件)的打包文件.在Unix下,一般是由命令"ar"来完成打包工作. 一.函数 ...
- Qt开发Gif播放器
一.资源下载地址 https://www.aliyundrive.com/s/jBU2wBS8poH 本项目路径:项目->免费->Gif播放器(包含整个工程源码,vs2019打开即可编译运 ...