需求
对于部署在阿里云上的重要系统一般是不让其他人访问的,所以会在负载均衡(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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“Python脚本修改阿里云的访问控制列表的方法”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新动态
2024年11月09日
2024年11月09日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]