树莓派开机后把 IP 地址信息,自动推送到微信的方法

树莓派经常会用到查看本机的IP,知道了 IP 地址才能进行 ssh 远程连接。以前用过使用Python 获取树莓派地址+Email 发送到自己的邮箱,方法是可行的。但是这里使用了更加简便的方法,使用 Python 加上 Server酱服务, Server酱 服务实现了通过请求 URL + 推送信息,的方式来把消息推送到微信。省去了去配置邮箱参数的麻烦,而且通过微信可以更加快捷的查看到推送到微信的IP信息。

代码

'''
树莓派开机联网后 IP 地址信息推送到 微信
用到: server酱 http://sc.ftqq.com/3.version (提供了微信消息推送服务)
'''
#!/usr/bin/env python3
import time
import socket
import requests

def getLocalIP():
    '''
    获取 IP 地址
    '''
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('1.1.1.1', 80))
    ipaddr = s.getsockname()[0]
    s.close()
    return ipaddr

def post(ip):
    '''
    把 ip 地址加入到请求URL中进行消息推送,实现细节有 "server酱" 服务提供
    我们只要把 自己的 SCKEY 和要推送的数据加入到 url中,然后向服务器发送请求即可
    '''
    # 基本 URL, 把 token 替换成自己的,后面的.send需要保留
    # url = "https://sc.ftqq.com/SCU7a3d362373f6d57ebdcd.send" 例子
    url = "https://sc.ftqq.com/token.send"

    # text=%s 这里的 %s 就是我们的 ip地址,也就是要推送的数据,服务器内部是通过URL 参数 text 来
    data = "text=%s" % ip
    results = requests.get(url, data)
    print(results)

if __name__ == '__main__':
    time.sleep(20)  # 等待联网,因为树莓派启动后的WiFi联网是需要一定时间的

    while True:
        ip = getLocalIP()

        if ip == False:
            post('正在获取网络地址')
        else:
            print(ip)
            post(ip)
            time.sleep(5)
        break   # 退出循环

加入开启启动

sudo -H -u pi /usr/bin/python3 /home/pi/ip_push.py &

指定 pi 用户执行

微信收到消息的界面

Server酱 服务网站

http://sc.ftqq.com/3.version

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注