准备工作

本机操作系统:CentOS7

python版本:python2.7.5

还需要准备如下信息:

一个云账号、Access Key ID、Access Key Secret、安全组ID、Region ID(如cn-shanghai)

1 安装阿里云python SDK

 pip install aliyun-python-sdk-ecs

2 需求分析

我们供应商的开发人员经常需要访问我们的阿里云ECS资源,我们要根据供应商的ip添加相应的入方向安全组策略。

但是供应商的外网ip经常变化,几乎每天都要添加新的安全组策略并删掉旧的策略,在阿里云平台上执行此类操作很繁琐、低效。

所以需要使用python来简化操作,运行脚本就可以实现添加和删除安全组规则的操作。

3 脚本说明

3.1 增加规则的脚本

#!/usr/bin/python
# -*- coding: utf-8 -*- from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526 import AuthorizeSecurityGroupRequest
import sys
import json class AliGroup: def __init__(self, AccessKey, AccessSecret, RegionId):
self.AccessKey = AccessKey
self.AccessSecret = AccessSecret
self.RegionId = RegionId def client(self):
"""用于创建AcsClient实例
"""
client = AcsClient(self.AccessKey, self.AccessSecret, self.RegionId)
return client def authorizeSecurityGroupRequest(self, PortRange, SourceCidrIp, Priority=1, IpProtocol='tcp', SecurityGroupId='your-securitygroup-id'):
"""用于添加安全组规则
"""
#创建AuthorizeSecurityGroupRequest实例
request = AuthorizeSecurityGroupRequest.AuthorizeSecurityGroupRequest()
#设置安全组ID
request.set_SecurityGroupId(SecurityGroupId)
#设置协议,比如TCP或者UDP
request.set_IpProtocol(IpProtocol)
#设置端口范围
request.set_PortRange(PortRange)
#如果存在源ip,则设置源ip
if SourceCidrIp:
request.set_SourceCidrIp(SourceCidrIp)
#设置优先级
request.set_Priority(Priority)
#设置规则的动作为接受
request.set_Policy('accept')
#设置接收数据格式为json
request.set_accept_format('json')
return request if __name__ == '__main__':
#AliGroup类实例化
ali = AliGroup("your-access-key-id", "your-access-key-secret", "your-region-id")
#创建AcsClient实例
clt = ali.client()
#添加安全组规则,由于优先级、协议和安全组ID已经设置默认参数,所以只需要在运行脚本时输入端口范围和源ip两个参数
add = ali.authorizeSecurityGroupRequest(sys.argv[1], sys.argv[2])
#打印输出
res = clt.do_action(add)
print res

3.2 删除规则的脚本

#!/usr/bin/python
# -*- coding: utf-8 -*- from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526 import RevokeSecurityGroupRequest
import sys
import json class AliGroup:
def __init__(self, AccessKey, AccessSecret, RegionId):
self.AccessKey = AccessKey
self.AccessSecret = AccessSecret
self.RegionId = RegionId def client(self):
"""用于创建AcsClient的实例
"""
client = AcsClient(self.AccessKey, self.AccessSecret, self.RegionId)
return client def revokeSecurityGroupRequest(self, PortRange, SourceCidrIp, Priority=1, IpProtocol='tcp', SecurityGroupId='your-securitygroup-id'):
"""删除安全组规则
"""
request = RevokeSecurityGroupRequest.RevokeSecurityGroupRequest()
request.set_SecurityGroupId(SecurityGroupId)
request.set_IpProtocol(IpProtocol)
request.set_PortRange(PortRange)
if SourceCidrIp:
request.set_SourceCidrIp(SourceCidrIp)
request.set_Policy('accept')
request.set_accept_format('json')
return request if __name__ == '__main__':
ali = AliGroup("your-access-key-id", "your-access-key-secret", "your-region-id")
clt = ali.client()
rem = ali.revokeSecurityGroupRequest(sys.argv[1], sys.argv[2])
res = clt.do_action(rem)
print res

4 运行结果

4.1 增加规则

参数说明:

python后面第一个参数是脚本名称;

第二个参数是端口范围,一定要以"source-port/end-port"这种形式来写,这里以8282/8282为例;

第三个参数是源ip,这里以112.115.115.58为例。

运行结果如下:

云平台上查看结果,也可以看到增加的规则:

4.2 删除规则

运行结果如下:

云平台上查看结果,也可以看到删除的规则消失了,这里就不展示了。

使用阿里云Python SDK管理ECS安全组的更多相关文章

  1. 阿里云 OCS SDK for NodeJS介绍

    阿里云 OCS SDK for NodeJS介绍 阿里云技术团队:熊亮 阿里云 SDK for NodeJS 是为 NodeJS 开发者提供使用阿里云各项服务的统一入口,由阿里云UED团队负责开发维护 ...

  2. 快速上手阿里云oss SDK

    使用阿里云oss SDK 依赖安装: pip install oss2 pip install aliyun-python-sdk-sts 版本最好是 2.7.5 或以上 如果要开启 crc64 循环 ...

  3. 使用Python SDK管理Azure Load Balancer

    概述 下面将演示如何使用Python SDK管理中国区Azure Load balancer.关于Azure负载均衡器的详细功能介绍,请参考官方文档. Code Sample import os fr ...

  4. 基于阿里云SLB/ESS/EIP/ECS/VPC的同城高可用方案演练

    今天基于阿里云SLB/ESS/EIP/ECS/VPC等产品进行了一次同城高可用方案演练: 基本步骤如下: 1. 在华东1创建VPC网络VPC1,在华东1可用区B和G各创建一个虚拟交换机vpc1_swi ...

  5. 阿里云 .NET SDK Roa 和 Rpc 风格签名

    阿里云 .NET SDK Roa 和 Rpc 风格的签名 Demo,适用于自己不想用其提供的SDK,想用自己组装 Roa 和 Rpc 的签名方式. Roa 和 Rpc 的签名方式主要有以下几个不同点: ...

  6. 揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿

    作者:予涛 途坦 这个夏天,没什么能够比一场酣畅淋漓的奥运比赛来的过瘾.但是,在视频平台直播观看比赛也有痛点:"卡顿" 和 "延时".受限于不同地域.复杂的网络 ...

  7. 在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境

    阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在 ...

  8. 阿里云直播SDK - .NET

    阿里云sdk:https://develop.aliyun.com/sdk/csharp?spm=5176.doc27234.2.4.QiJb9l Github:https://github.com/ ...

  9. (转)在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境

    阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在 ...

随机推荐

  1. 入坑Vue

    长期的后端数据开发着实有些枯燥无趣,项目完工,闲暇之际,最近一直在研究前端方面的东西,不得感叹,前端技术发展速度快的让人有些目不暇接,从jQuery开启的插件化时代,几乎许多网站都被jQuery支配, ...

  2. SELECT查询结果集INSERT到数据表

    简介 将查询语句查询的结果集作为数据插入到数据表中. 一.通过INSERT SELECT语句形式向表中添加数据 例如,创建一张新表AddressList来存储班级学生的通讯录信息,然后这些信息恰好存在 ...

  3. pycharm的放大和缩小字体的显示 和ubunt的截圖工具使用 ubuntu上安装qq微信等工具

    https://www.cnblogs.com/sui776265233/p/9322074.html#_label0 ubuntu: 截圖工具的使用 在ubuntu 10.04 的时候,还可以很方便 ...

  4. yum/dnf/rpm 等 查看rpm 包安装路径 (fedora 中 pygtk 包内容安装到哪里了)

    有时候我们 使用 包管理工具,安装很方便,但我们还要能知道它们安装了什么文件,都把这些文件安装到哪里了? 我们以探究 pygtk 为例 在 fedora 28 之中 查找 pygtk: ➜ ~ rpm ...

  5. cron定时任务介绍

    什么是cron? Cron是linux系统中用来定期执行或指定程序任务的一种服务或软件.与它相关的有两个工具:crond 和 crontab.crond 就是 cron 在系统内的宿主程序,cront ...

  6. C++设计模式 ==> 策略模式与简单工厂模式结合

    简介 策略模式相较之于简单工厂模式适用于生产方法经常变化且方法较为繁多的情况,因为生产方法时常变化就会需要频繁修改工厂类,违背了开闭原则,这时就可以用策略选择类由客户端根据需求动态切换策略.且策略模式 ...

  7. IIS 部署SSL证书

    1.导入证书 打开IIS服务管理器,点击计算机名称,双击‘服务器证书 双击打开服务器证书后,点击右则的导入 选择证书文件,点击确定 2.站点开启SSL 选择证书文件,点击确定 点击网站下的站点名称,点 ...

  8. 13.4SolrCloud集群使用手册之CRUD

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ Student.java package cn.ljh.ssm.test; import org.apache ...

  9. 01-Angularjs开发环境搭建

    一.概述## 时下web前端非常热门,新的框架层出不穷,web前端的三驾马车VueJS.AngularJS.ReactJS发展非常迅猛.其中VueJS是国人开发的项目,百度热点趋势以1000%的速度在 ...

  10. BZOJ 1934 善意的投票

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1934 题目大意: 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问 ...