使用阿里云Python SDK管理ECS安全组
2019-03-06 07:18:16来源:博客园 阅读 ()
准备工作
本机操作系统:CentOS7
python版本:python2.7.5
还需要准备如下信息:
一个云账号、Access Key ID、
Access Key Secret、
安全组ID、Region ID(如cn-shanghai)
1 安装阿里云python SDK
1 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 删除规则
运行结果如下:
云平台上查看结果,也可以看到删除的规则消失了,这里就不展示了。
原文链接:https://www.cnblogs.com/cuizhisong/p/10478240.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Django之FBV与CBV
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash