You are currently viewing 让树莓派推送IP到微信

让树莓派推送IP到微信

树莓派没连接屏幕情况下,连接网络怎样快速获得IP地址。

查了下网上现在有小屏幕显示、DDNS绑定还有包括让树莓派播放音频把IP地址读出来。

这里准备用Python写一个小程序

之前我一直在用 Server 酱的推送服务,推送消息到微信中,这里想到可以让树莓派每次开机联网后将IP通过 Server 酱推送到微信。

这里需要用到:

  • 1.树莓派(我手里是树莓派4,多少没关系能联网就行)
  • 2.Server酱账号一个
  • 3.Python程序一个

操作步骤

首先到Server酱注册账号,并绑定要接收消息的微信

http://sc.ftqq.com/

可使用GitHub一键登入 ,登录后首先绑定需要接收消息的微信

点击【微信推送】,扫描二维码关注公众号绑定接收微信号

Server酱首页选择微信推送

然后选择发送消息,获取SCKEY

Server酱参数说明

Server酱支持Get或者Post推送消息,这里我们选择Post可以定义标题和内容

接下来准备Python代码(自己瞎写的 能用就行?)

#!/usr/bin/env python
# coding=utf-8

#通过Sever酱推送树莓派IP到微信
#By 沙糖桔

import os
import sys
import time
import socket
import subprocess
import requests
import urllib3
import ssl



def getLocalIP():
    ip = None
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('114.114.114.114', 0))
        ip = s.getsockname()[0]
    except:
        name = socket.gethostname()
        ip = socket.gethostbyname(name)
    if ip.startswith("127."):
        cmd = '''/sbin/ifconfig | grep "inet " | cut -d: -f2 | awk '{print $1}' | grep -v "^127."'''
        a = subprocess.Popen(
            cmd,
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE)
        a.wait()
        out = a.communicate()
        ip = out[0].strip().split("\n")  # 所有的列表
        if len(ip) == 1 and ip[0] == "" or len(ip) == 0:
            return False
        ip = "over".join(ip)
    return ip


def pushtoWx(text,desp):
    s = requests.Session()
    ssl._create_default_https_context = ssl._create_unverified_context  # 关闭SSL证书验证
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36','Content-type': 'application/x-www-form-urlencoded'}
    push_url = r'https://sc.ftqq.com/[替换为你的SCKEY].send'  # Server 推送地址
    values = {'text': text, 'desp': desp}
    rp = s.post(push_url, data=values, headers=headers,verify=False)
    html = rp.text
    print(html)


def push_ip(ip):
    pushtoWx('树莓派地址:'+ip,'')


if __name__ == '__main__':
    count = 0
    time.sleep(10)#开机连接等待十秒钟后执行
    while True:
        ip = getLocalIP()
        print(ip)
        if ip == False:
            print("获取ip错误")
        else:
            count += 1
            push_ip(ip)
        if count == 2:
            break
        time.sleep(3)

然后将脚本加入开机执行

sudo vim /etc/rc.local

在 exit 0 之前添加一行:

sudo /usr/bin/python /home/pi/push_ip_wx.py &

保存后重启树莓派

启动后联网10秒推送消息到微信

Server酱推送的消息
收到的IP地址

拿到IP后就可以SSH、VNC链接树莓派开始玩耍。

发表回复