python云服务技术(Python脚本修改阿里云的访问控制列表的方法)
类别:脚本大全 浏览量:283
时间:2022-01-15 01:30:17 python云服务技术
Python脚本修改阿里云的访问控制列表的方法需求
对于部署在阿里云上的重要系统一般是不让其他人访问的,所以会在负载均衡(SLB)上加上访问控制列表。而使用ASDL拨号上网的宽带来说一般公网IP都不会固定的,会随时变更公网IP,所以此脚本正是解决此需求。
说明
脚本运行前需要先安装aliyun-python-sdk-core 和aliyun-python-sdk-slb 2个sdk,并且在阿里云账户里面创建access_key和access_secret。
脚本会查询到目前的公网IP,如何创建本地一个文件将IP记录到文件里,下次执行时会将查询到的IP和文件里的对比,如果IP和文件里记录的IP不一致则将IP添加到访问控制列表里。
最后只需要在服务器里每隔一段时间执行一次此脚本就OK。
sdk 下载:https://developer.aliyun.com/tools/sdk#/python
提醒
如果是重要的数据在公网传输,还是尽量使用加密传输。毕竟阿里云的SSL 和IPSEC 也很完善了,推荐使用。
|
#!/usr/bin/env python3 #coding:utf-8 from aliyunsdkcore import client import time,requests from aliyunsdkslb.request.v20140515 import AddAccessControlListEntryRequest from aliyunsdkcore.profile import region_provider #region_provider.modify_point('slb', '<regionId>', 'slb.<regionId>.aliyuncs.com') # 名称:阿里云负载均衡白名单自动修改脚本 ### 变量配置 ### # 保存历史IP地址的文件名 file_save_ipaddr = 'ipaddr.txt' # 一些可以获取本机出口IP的API地址 ip_api_list = 'http://icanhazip.com,http://ident.me,http://ifconfig.me,http://ipecho.net/plain,http://whatismyip.akamai.com,http://myip.dnsomatic.com' # SLB 配置,此 Access Key 只需添加 ACL 的权限 aliyun_access_key = 'xxxxxxxxx' aliyun_access_secret = 'xxxxxxxxxxxxxx' # 在这里可以获取region:https://help.aliyun.com/document_detail/40654.html aliyun_region = 'cn-hangzhou' # 访问列表一(acl-bp1792k8uvk11xxpgu5l) # 访问列表二(acl-bp1okd1kud9a41kyjkja) # 需要修改的ACL的ID,进入负载均衡控制台 -> 访问控制 -> 策略ID aliyun_acl_id = [ 'acl-bp1okd1kud9a41kyjkja' , 'acl-bp1792k8uvk11xxpgu5l' ] ### 配置结束 ### def getExitIpAddr(ip_api_list): '''获取出口IP地址''' url_list = str (ip_api_list).split( ',' ) ip = None for url in url_list: resp = requests.get(url,timeout = 3 ) if resp.status_code = = 200 : ip = resp.text.strip() break return ip def setAcl(access_key,access_secret,region,acl_id,ip): '''修改ACL''' clt = client.AcsClient(access_key,access_secret,region) # 设置参数 request = AddAccessControlListEntryRequest.AddAccessControlListEntryRequest() request.set_accept_format( 'json' ) request.add_query_param( 'AclId' ,acl_id) request.add_query_param( 'RegionId' ,region) request.add_query_param( 'Tags' , 'API自动添加' ) request.add_query_param( 'AclEntrys' , '[{{"entry":"{ip}/32","comment":"此处是注释{d}"}}]' . format (ip = ip,d = time.strftime( "%Y-%m-%d" ,time.localtime()))) #添加ip并添加注释 # 发起请求 response = clt.do_action_with_exception(request) print (response) def getSavedIp(filename): '''获取已保存的IP''' try : with open (filename, 'r' ,encoding = 'utf-8' ) as f: return f.readline() except IOError: print ( "文件不存在" ) def saveNewIp(filename,ipaddr): '''保存新IP''' with open (filename, 'w' ,encoding = 'utf-8' ) as f: f.write(ipaddr) def main(): current_ip = getExitIpAddr(ip_api_list) saved_ip = getSavedIp(file_save_ipaddr) print ( '当前IP' ,current_ip) print ( '保存的IP' ,saved_ip) if current_ip = = saved_ip: print ( 'IP无变化' ) exit( 0 ) else : for acl_id in aliyun_acl_id: setAcl(access_key = aliyun_access_key, access_secret = aliyun_access_secret, region = aliyun_region, acl_id = acl_id, ip = current_ip) time.sleep( 5 ) saveNewIp(file_save_ipaddr,current_ip) if __name__ = = '__main__' : main() |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://blog.51cto.com/billy98/2358807
您可能感兴趣
- 阿里云服务器怎么搭建环境(阿里云服务器快速配置php环境的方法)
- 阿里云rds移动数据库(阿里云跨区域服务器迁移镜像迁移,RDS数据库迁移图文教程)
- 阿里云服务器怎么设置安全(详解阿里云服务器添加安全组规则图文教程)
- 云服务器ecs使用教程(在阿里云ECS服务器上搭建WordPress的全过程解析)
- 阿里云的补丁更新应该怎么打(阿里云安骑士企业版有什么作用?)
- 购买了阿里云服务器之后怎么使用(阿里云服务器怎么买?阿里云服务器购买流程)
- 阿里云服务器安全组设置规则(阿里云主机不能用IP访问网站的解决方法配置安全组规则搞定)
- 云服务硬盘挂载有几种方法(腾讯云 阿里云 挂载硬盘方法数据盘)
- 阿里云对象存储oss收费吗(阿里云存储服务OSS基本概念)
- 仅主机模式搭建hadoop集群(阿里云服务器搭建hadoop集群补充)
- 阿里云ubuntu系统(阿里云ubuntu16.04如何搭建pptpd服务)
- 阿里云服务器如何选(企业如何选择阿里云服务器配置?)
- 阿里云几个服务器可以备案(阿里云服务器网站备案简单流程说明文档)
- 阿里云如何部署自己的服务器(如何快速搭建一个阿里云服务器)
- 阿里云域名解析在哪里(阿里云服务器实现域名解析步骤小白教程)
- docker添加mq基础镜像(Docker阿里云RocketMQ 4.5.1部署流程详解)
- 观花盆栽佛肚竹盆景制作及养护(观花盆栽佛肚竹盆景制作及养护)
- 春天养佛肚竹,做好这几件事,叶绿根壮寓意好 越养越旺家(春天养佛肚竹做好这几件事)
- 律界衣品最好,时尚圈学识数高,41岁的Amal堪称现实版的傲骨贤妻(时尚圈学识数高)
- 刘智泰确认出演《Good Wife》 担纲男一号(刘智泰确认出演Good)
- 《傲骨之战》剧终 律政女魔头Diane,为什么是大女主天花板(傲骨之战剧终律政女魔头Diane)
- 汉族(汉族的祖先是谁)
热门推荐
- dedecms5.7能否用5.5的模板(dedecms 5.5 伪静态设置方法)
- mysql数据库主键选择的详解(图文详解MySQL中的主键与事务)
- python爬网验证码在哪里(详解python 爬取12306验证码)
- php单例设计方法(php设计模式之单例模式用法经典示例分析)
- python设置微信(利用python实现在微信群刷屏的方法)
- docker容器使用流程(在Docker构建的容器中实现安装ping工具)
- docker nginx 配置详解(Docker 如何安装 Nginx)
- laravel 验证规则(Laravel中正确地返回HTTP状态码方法示例)
- Extjs中grid 的ColumnModel 属性配置
- python中对象方法和顶级方法(Python3.5面向对象程序设计之类的继承和多态详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9