树莓派 之 动态DNS(DNSPod)

简介: 需注册DNSPod的账号,如果做Server的树莓派IP总是变动的话,可以用这个实时更新域名的IP脚本来自github,版权归属原作者chuangbo,以下说明引自README替换上你的Email,密码,域名ID,记录ID等参数,就可以运行了。

需注册DNSPod的账号,如果做Server的树莓派IP总是变动的话,可以用这个实时更新域名的IP
脚本来自github,版权归属原作者chuangbo,以下说明引自README
替换上你的Email,密码,域名ID,记录ID等参数,就可以运行了。 会在后台一直运行,每隔30秒检查一遍IP,如果修改了就更新IP。获得domain_id可以用curl curl -k https://dnsapi.cn/Domain.List -d "login_email=xxx&login_password=xxx"获得record_id类似 curl -k https://dnsapi.cn/Record.List -d "login_email=xxx&login_password=xxx&domain_id=xxx"

sudo nano /usr/bin/pypod.py

pypod.py

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import httplib, urllib, urllib2
import socket
import time
import re

urllib2_urlopen = urllib2.urlopen
re_findall = re.findall

params = dict(
    login_email="ID", # replace with your email
    login_password="12345678", # replace with your password
    format="json",
    domain_id= , # replace with your domain_od, can get it by API Domain.List
    record_id= , # replace with your record_id, can get it by API Record.List
    sub_domain="www", # 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

def getip():
    try:
        ip = re_findall(r"\[.+\]", urllib2_urlopen("http://1111.ip138.com/ic.asp", timeout=10).read())[0][1:-1]
    except Exception, e:
        print e
        pass
    return ip

if __name__ == '__main__':
    while True:
        try:
            ip = getip()
            print ip
            if current_ip != ip:
                if ddns(ip):
                    current_ip = ip
        except Exception, e:
            print e
            pass
        time.sleep(300)

开机自运行:

  • sudo nano /etc/rc.local

  • exit 0

前添加:

  • python /usr/bin/pypod.py

不过似乎自启和Gitlab有冲突

相关文章
|
Web App开发 网络协议 测试技术
|
SQL 关系型数据库 测试技术
关系数据库如何快速查询表的记录数
在数据库中,很多人员习惯使用SELECT COUNT(*)、SELECT COUNT(1)、SELECT COUNT(COL)来查询一个表有多少记录,对于小表,这种SQL的开销倒不是很大,但是对于大表,这种查询表记录数的做法就是一个非常消耗资源了,而且效率很差。
4136 0
|
9月前
|
前端开发 JavaScript 测试技术
Vue 3 + Vite:现代前端开发新范式-前端开发的”涡轮增压引擎”-优雅草卓伊凡
Vue 3 + Vite:现代前端开发新范式-前端开发的”涡轮增压引擎”-优雅草卓伊凡
528 0
Vue 3 + Vite:现代前端开发新范式-前端开发的”涡轮增压引擎”-优雅草卓伊凡
|
安全 网络安全 数据安全/隐私保护
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
1332 0
|
存储 缓存 安全
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
888 0
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
JavaScript 前端开发 Java
|
Ubuntu Windows
双系统Ubuntu无法访问windows磁盘分区解决方法
为了更好的体验各种操作系统,在电脑中安装双系统是很好的选择,但在使用中难免会遇到这样或那样的问题. 最近总是遇到Ubuntu系统下无法访问windows磁盘分区问题,看了系统日志发现是挂载磁盘出问题了,解决方法是使用ntfs来修复后重新挂载.
2488 0
|
JavaScript
vue老项目sass和element-ui开发踩坑
公司的一个各种依赖比较老的项目,习惯了之前的iview和stylus开发,刚接手还是有很多不习惯的地方
Pyside6-第九篇-QTextEdit多行文本编辑器
Pyside6-第九篇-QTextEdit多行文本编辑器
1123 0