今天刚入手树莓派 3,有种相见恨晚的感觉,接下来又有得折腾了。
ZHETENG #1: 动态 DNS
我相信虽然树莓派足够轻便,但你也不会愿意总把它带在身边,应该还是需要固定在某个地方提供服务的,比如藏在家里的电视柜里——你要拿它做一个机器人或者无人机之类,当我没说,而且这篇文也没必要往下看了,这里仅针对拿树莓派当 Linux 远程主机使用的场景 ;-)
如果家里的宽带没有固定公网 IP,不在家的时候怎么访问就很成问题。过去我在西数 MyBookLive 上的做法是,每天中午 12 点,crontab 执行脚本获取外网 IP,email 给我。low 是 low 了点,但基本上能满足需求,主要考虑 MyBookLive 频繁唤醒几 T 的大硬盘会缩短寿命,所以把脚本执行的周期设得比较长。
现在有了树莓派,没有挂硬盘,只插了个 32G 的 TF 卡,可以随便搞了,最优的方案当然是动态域名解析。于是在 DNSPod 注册了账号,把域名的 nameserver 设置到 DNSPod,再用 python 写了个脚本专门干这个事,代码放在 github 上了,把文档贴一下:
dnspod.py
@author migege
@version 0.0.2
dnspod.py 是基于 DNSPod 服务的动态 DNS 脚本,用于检测 IP 变化并更新至 DNSPod,支持多域名解析。支持 Linux 设备,包括树莓派(Raspberry Pi)。
Prerequisites
- python
- pyyaml
- requests
python 的模块可通过 pip install
命令安装。如果未安装 pip,请先安装 pip。
Installation
安装 git 客户端,通过本命令获取 dnspod.py
git clone https://github.com/migege/dnspod.git dnspod
然后到 dnspod 目录下新建 conf.yaml
文件,根据您的 DNSPod 设置,填入以下内容:
token: <your_api_token> sub_domains: <your_first_sub_domain_name>: domain_id: <your_domain_id> record_id: <your_record_id> <your_second_sub_domain_name>: domain_id: <your_domain_id> record_id: <your_record_id>
最后设置 crontab 定时任务
*/10 * * * * cd <path_to_dnspod>; /usr/bin/python dnspod.py conf.yaml > /dev/null 2>&1 &
Tips
- */10 表示每 10 分钟执行一次 dnspod.py
- 如果 python 可执行路径不是 /usr/bin/python,请自行替换