博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云香港主机自动换IP
阅读量:2228 次
发布时间:2019-05-09

本文共 4167 字,大约阅读时间需要 13 分钟。

为什么要写这个脚本原因你懂的,现在都是直接封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.pyimport json, time, jsonpath,requestsfrom aliyunsdkcore.client import AcsClientfrom aliyunsdkecs.request.v20140526 import ModifyInstanceNetworkSpecRequest, DescribeInstancesRequestfrom aliyunsdkalidns.request.v20150109 import DescribeDomainRecordsRequestfrom aliyunsdkalidns.request.v20150109 import AddDomainRecordRequestfrom aliyunsdkalidns.request.v20150109 import DeleteDomainRecordRequestfrom aliyunsdkalidns.request.v20150109 import DescribeDomainRecordInfoRequestAccessKey = ""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('0')    response = client.do_action_with_exception(request)    return responsedef ecs_update():    request = ModifyInstanceNetworkSpecRequest.ModifyInstanceNetworkSpecRequest()    request.set_protocol_type("https")    request.set_InstanceId(InstanceId)    request.set_InternetMaxBandwidthOut('20')    response = client.do_action_with_exception(request)    return responsedef 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 responsedef 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()

 

转载于:https://www.cnblogs.com/37yan/p/8611437.html

你可能感兴趣的文章
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
(PAT 1019) General Palindromic Number (进制转换)
查看>>
(PAT 1073) Scientific Notation (字符串模拟题)
查看>>
(PAT 1080) Graduate Admission (排序)
查看>>
Play on Words UVA - 10129 (欧拉路径)
查看>>
mininet+floodlight搭建sdn环境并创建简答topo
查看>>
【linux】nohup和&的作用
查看>>
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【深度学习】LSTM的架构及公式
查看>>
【python】re模块常用方法
查看>>