树莓派加python实现ddns功能,并通过企业微信通知IP地址变更
本帖最后由 liuyongqing1 于 2019-3-1 11:58 编辑这个python脚本原理是检查当前环境的公网IP地址,然后判断与DNS记录的地址是否一致,一致什么也不提示,不一致会修改记录,并发送到企业微信通知。
我目前是把脚本放到树莓派(ubuntu系统)的定时任务,每隔5分钟就执行检测。之所以放到树莓派里是因为省电可以24小时开机。
脚本里会用到阿里云的Accessskeys和企业微信的,具体看下图。
第一步:登陆阿里云,鼠标移动到头像处,进入accesskeys
第二步:点击显示,需要手机验证码,即可获取key与secret
第三步:登陆企业微信,企业微信个人也可以申请团队,免费且不需要执照什么的。
如下图取得企业ID对应脚本里的corpid
第四步:进入目标程序
第五步:取得agnetid 与secret 对应脚本里的 corpsecret和Agentid
然后下面说下脚本
首先要安装依赖
pip3.6 install -r requirements.txt (这里都是linux环境 ,windows 如果想用可能需要安装vistual studio)
然后修改wech.py即可
上图数字对应
1 对应accesskey
2 对应 access_secret
3 对应微信企业ID
4 对应应用的secret
5 对应 应用的agentid
6 对应 购买的域名 例如abc.com千万不可写www.abc.com
7 同6
8 和 9 一般是一样的,是www.abc.com中的www(www可以替换成其他,前提阿里上要有的这个记录)
接下来可以使用linux或是windows定时任务跑起来
计划任务:
*/5 * * * * /home/pi/.pyenv/shims/python3 /home/pi/Documents/weixin_msg/wech.py>>/dev/null 2>&1
如果不用企业微信可以把相应代码删除掉例如:
Access_Key="" Access_Secret=""
client = AcsClient(
Access_Key,
Access_Secret,
"regiond(cn-shenzhen)"
);
msg=wx.Get_Ip()
Doamin_IP=list_dns_record('abc.com')
#Doamin_IP=list_dns_record('域名地址(不带www)')
if str(Doamin_IP.strip()) != str(msg.strip()):
edit_dns_record('abc.com','www','www','A',msg.strip())
程序运行结果如下图
好久没发过贴了 不知道怎么排板,等有时间好好研究研究。这里声明一下dns部分借鉴了github上面一份代码,但是地址忘了,感谢他~我只是在这基础上做了些修改及适配python3
附件及地址
https://pan.baidu.com/s/1pH50A42DT2XKcrDX48Y9ow 密码:ya5y 365milesroad 发表于 2018-9-29 18:54
可以同来做什么啊?内网穿透?
额内网穿透不可以。但是给联通打个电话说明要公网IP 他会给你分配公网IP。这样你可以通过你的域名连接家里的内网了。就是实现的以前路由器的DDNS功能。我家猫上的DDNS功能根本不能用。所以我才自己写个脚本。 快乐小风 发表于 2018-9-29 17:35
看不懂 , 树莓派在上面地方用的呢
是不是我文字码的有问题怎么好多人看不懂 本帖最后由 liuyongqing1 于 2018-9-29 17:13 编辑
忘了把代码发上来。。。已经整合进去了
楼主辛苦了,虽然看不懂,但是挺羡慕你的 路人辅助 发表于 2018-9-29 17:16
楼主辛苦了,虽然看不懂,但是挺羡慕你的
羡慕什么:lol 看不懂 , 树莓派在上面地方用的呢 可以同来做什么啊?内网穿透? 可以同来做什么啊?内网穿透? 好厉害的样子 支持一下 楼主 {:1_921:}
页:
[1]
2