为什么要写这个脚本原因你懂的,现在都是直接封IP

pip3 install aliyun-python-sdk-alidns aliyun-python-sdk-domain aliyun-python-sdk-ecs time jsonpath requests

用计划任务跑不能小于10分钟

*/10 * * * * python3 /root/update_ip.py >>/var/log/update_ip.log 2>&1

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2018/1/26 0026 12:01
# @Author : sanmuyan
# @FileName: aliyun_ip.py
import json, time, jsonpath,requests
from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526 import ModifyInstanceNetworkSpecRequest, DescribeInstancesRequest
from aliyunsdkalidns.request.v20150109 import DescribeDomainRecordsRequest
from aliyunsdkalidns.request.v20150109 import AddDomainRecordRequest
from aliyunsdkalidns.request.v20150109 import DeleteDomainRecordRequest
from aliyunsdkalidns.request.v20150109 import DescribeDomainRecordInfoRequest AccessKey = ""
Secret = ""
Regions = "cn-hongkong" # 创建 AcsClient 实例
client = AcsClient(
AccessKey,
Secret,
Regions
); def http_test():
for i in range(6):
try:
data = str(requests.head('http://mirrors.ustc.edu.cn',timeout=5))
except:
print("Firewall deny connect timeout=5")
else:
print("No proble",data)
exit() def ecs_Downgrade():
request = ModifyInstanceNetworkSpecRequest.ModifyInstanceNetworkSpecRequest()
request.set_protocol_type("https")
request.set_InstanceId(InstanceId)
request.set_InternetMaxBandwidthOut('')
response = client.do_action_with_exception(request)
return response def ecs_update():
request = ModifyInstanceNetworkSpecRequest.ModifyInstanceNetworkSpecRequest()
request.set_protocol_type("https")
request.set_InstanceId(InstanceId)
request.set_InternetMaxBandwidthOut('')
response = client.do_action_with_exception(request)
return response def ecs_des(InstanceId):
request = DescribeInstancesRequest.DescribeInstancesRequest()
request.set_protocol_type("https")
request.set_InstanceIds(InstanceId)
response = client.do_action_with_exception(request)
data = json.loads(response)
data = jsonpath.jsonpath(data, "$.Instances.Instance.[*].PublicIpAddress.IpAddress.[*]")
global PublicIpAddress
PublicIpAddress = ','.join(data) def dns_des(RecordId):
request = DescribeDomainRecordInfoRequest.DescribeDomainRecordInfoRequest()
request.set_protocol_type("https")
request.set_RecordId(RecordId)
response = client.do_action_with_exception(request)
data = json.loads(response)
data = json.dumps(data, sort_keys=True, indent=2)
print(data) def dns_del():
request = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest()
request.set_protocol_type("https")
request.set_DomainName(DomainName)
request.set_RRKeyWord(RR)
response = client.do_action_with_exception(request)
data = json.loads(response)
TotalCount = jsonpath.jsonpath(data, "$..TotalCount")
if TotalCount[0] != 0:
data1 = jsonpath.jsonpath(data, "$..RR")
data2 = jsonpath.jsonpath(data, "$..RecordId")
if RR in data1:
index = data1.index(RR)
RecordId = data2[index]
print("WARNING: Delete the existing records")
dns_des(RecordId)
request = DeleteDomainRecordRequest.DeleteDomainRecordRequest()
request.set_RecordId(RecordId)
response = client.do_action_with_exception(request)
return response def dns_add():
dns_del()
request = AddDomainRecordRequest.AddDomainRecordRequest()
request.set_protocol_type("https")
request.set_DomainName(DomainName)
request.set_RR(RR)
request.set_Type(Type)
request.set_Value(Value)
response = client.do_action_with_exception(request)
data = json.loads(response)
print("INFO: Record adding success")
RecordId = (data['RecordId'])
dns_des(RecordId) if __name__ == '__main__':
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
InstanceId = "实例id"
DomainName = 'you.net'
RR = 'hk'
Type = 'A'
http_test()
ecs_Downgrade()
time.sleep(360)
ecs_update()
time.sleep(10)
ecs_des(InstanceId=[InstanceId])
Value = PublicIpAddress
dns_add()

阿里云香港主机自动换IP的更多相关文章

  1. 阿里云香港B区通过IPV6规避Google验证码

    最近买了阿里云香港B来FQ,然而被Google的验证码折磨的死去活来.四处查询,终于找到了一个合适的方案. 添加IPV6支持 阿里云香港是没有IPV6地址的,需要一个tunnel,这边使用HE.NET ...

  2. 阿里云虚拟主机的域名添加https的方法

    第一步:购买CDN套餐,阿里云虚拟主机目前是不支持https的,不过可以通过阿里云的CDN服务来跳转一下实现部署https 静态HTTPS请求数根据你的网站访问量来选择 第二步:申请SSL证书服务,有 ...

  3. 阿里云香港ECS搭建Shadowscoks

    注(转https://yijingping.github.io/2016/11/29/fanqiang.html) 1 为什么FQ 作为一个技术人员, 最常用的就是Google.StackOverfl ...

  4. 阿里云ECS主机多个网站配置,是有先后顺序的

    注意:阿里云ECS主机多个网站配置,是有先后顺序的: 进入路径:/alidata/server/httpd-2.4.2/conf/vhosts/  注意这个2.4.2是自己的版本不一样,但是找到 se ...

  5. 阿里云虚拟主机MYSQL加密长度16位变61位

    将网站迁移到阿里云虚拟主机后, 用户登录都提供密码错误, 一查询才发现MYSQL PASSWORD加密结果不致, 只有16位, 解决办法,在执行PASSWORD查询前,执行set old_passwo ...

  6. 给阿里云ECS主机添加IPV6地址

    阿里云公开的CentOS镜像将IPv6支持给去掉了,需要加载相关模块.通过HE的tunnelbroker开启IPv6隧道使国内VPS支持IPv6地址.   1. vim /etc/modprobe.d ...

  7. 阿里云专有网络与弹性公网IP

    阿里云服务器经典网络和专有网络究竟有什么区别? 在用户提交订单购买阿里云ECS云服务器时,会面临怎样选择网络类型的烦恼,阿里云服务器定制购买时,网络类型里的经典网络和专有网络(VPC)是什么含义,该怎 ...

  8. 阿里云虚拟主机针对恶意频繁攻击式访问造成CPU爆满的解决方法

    最近网站CPU经常爆满,到阿里云提交了工单,工程师给我的处理意见:   您好,虚拟主机CPU占用比较高通常这种情况有两种可能:   一是网站应用程序代码逻辑较复杂,或业务架构效率比较低,在请求了某个网 ...

  9. 阿里云香港服务器IIS发布网站不成功解决方法

    刚刚弄好了一个阿里云上服务器,费老劲儿了.我买了一个香港的服务器,最低配置,专有网络,买着玩的,一个.win的域名,省的国内备案了. 遇到的问题是怎么也访问不了我IIS上发布的网站,我把我解决方法说下 ...

随机推荐

  1. 为什么HTML使用<!DOCTYPE HTML>

    不管是刚接触前端,还是你已经“精通”web前端开发的内容,你应该知道在你写html的时候需要定义文档类型:你知道如果没有它,浏览器在渲染页面的时候会使用怪异模式:你知道各个浏览器在怪异模式下对各个元素 ...

  2. Smarty模板保留缓存

    <?php //缓存 //注:使用缓存需要用到这几个方法: //(ob_start(开启内存缓存); ob_flush(清除内存缓存);) //file_exists这个方法是判断文件是否存在 ...

  3. AIX文件系统和存储部署(转)

    文件系统和存储部署 文件系统的管理是AIX存储结构中的最后一环.定义完lv后,可采用如下两种方式使用lv: a.作为裸设备(raw)使用,一般是数据库型的应用 b.在lv上定义文件系统,并提供文件和数 ...

  4. WIN7/XP用注册表关联指定后缀名和打开程序(手动【图文】和C编程两种实现)

    前言: 本文是基本原理介绍和手动的操作.程序实现该功能在http://blog.csdn.net/arvon2012/article/details/7839556,同时里面有完整代码的下载. 今天在 ...

  5. shell之使用paste命令按列拼接多个文件

    试验文件: [root@db03 shell-script]# cat text1.txt 1 2 3 4 5 [root@db03 shell-script]# cat text2.txt orac ...

  6. XML文件处理

    XML XML简介 XML被设计用来传输和存储数据. XML是可扩展标记语言. 解析XML的几种方式 DOM,DOM4j------先把XML文件读取到内存中,然后再解析 SAX----------边 ...

  7. CABasicAnimation 划线动画

    CGFloat animateDuration = ; UIBezierPath *bezierPath = [[UIBezierPath alloc] init]; CGPoint centerFr ...

  8. 《Mysql ALTER基本操作》

    一:ALTER 添加单列 - 语法 - ALTER TABLE 表名 ADD 列名 定义类型 [FIRST(列将加入最上方) | AFTER 字段名(列加入某某字段之后) ] - 示例 `user` ...

  9. Python pip 如何升级

    场景:部署环境时,在线安装第三方库(pip install flask-bootstrap),提示pip版本过低. 解决方法一:        命令: python -m pip install -- ...

  10. 【pyqtgraph】pyqtgraph-鼠标互动

    pyqtgraph绘图库官方文档学习-鼠标互动(mouse interaction) 鼠标互动 大多数使用pyqtgraph数据可视化的应用程序都会生成可以使用鼠标进行交互式缩放,平移和配置的小部件. ...