dnspod通过接口解析本地ip python脚本
时间:2022-07-22
本文章向大家介绍dnspod通过接口解析本地ip python脚本,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近内网搭建了一台gitlab服务器,因为是内网没有公网ip,为了方便同事访问,dnspod直接解析了内网ip 但是网卡使用的是dhcp的获取ip的,每次关机可能会导致ip变动,所以通过dnspod接口改写了官方脚本来实现自动解析! 下面是我改下的脚本,你也可以把他写到计划任务里面多少分钟或小时执行一次!
#!/usr/bin/env python2
# -*- coding:utf-8 -*-
import httplib
import urllib
import socket
import time
# Use Token, check https://support.dnspod.cn/Kb/showarticle/tsid/227/
ID = "秘钥里面设置获取到" # relace with yours, get it as link above show you.
Token = "秘钥里面设置获取到" # relace with yours, get it as above link show you.
#
params = dict(
login_token=("%s,%s" % (ID, Token)),
format="json",
domain_id=通过curl获取到, # replace with your domain_od, can get it by API Domain.List
# curl https://dnsapi.cn/Domain.List -d "login_token=你的id,Token&format=json"
record_id=通过curl获取到, # replace with your record_id, can get it by API Record.List
#curl 'https://dnsapi.cn/Record.List' -d 'login_token=你的id,Token&format=json&domain_id=上面获取到的'
sub_domain="dev", # replace with your sub_domain
record_line="默认", #
)
current_ip = None
def ddns(ip):
params.update(dict(value=ip))
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/json"}
conn = httplib.HTTPSConnection("dnsapi.cn")
conn.request("POST", "/Record.Ddns", urllib.urlencode(params), headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
print data
conn.close()
return response.status == 200
#获取本机ip
def getip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip
if __name__ == '__main__':
while True:
try:
ip = getip()
print ip
if current_ip != ip:
if ddns(ip):
current_ip = ip
except Exception as e:
print e
pass
time.sleep(30)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言对巨灾风险下的再保险合同定价研究案例:广义线性模型和帕累托分布Pareto distributions分析
- 精解四大集合框架:Set核心知识总结
- NeurIPS 2020 | 一种崭新的长尾分布下分类问题的通用算法
- 精解四大集合框架:Map核心知识总结
- 厉害了,Matplotlib还能这样画散点图!
- 20种小技巧,玩转Google Colab
- 不用try catch,如何机智的捕获错误
- StyleGAN2玩出新高度!从华盛顿到特朗普,无缝切换生成历届美国总统
- 深入理解MySQL中事务隔离级别的实现原理
- 浅析常见的算法范式
- 检查 JavaScript 变量是否为数字的几种方式
- 玩转Google Colab!附20种小技巧
- 猿实战19——商品发布之商详数据准备
- 【大家的项目】code-minimap
- 尤大 几天前发在 GitHub 上的 vue-lit 是啥?