• 树莓派4B开机自动发微信报告ip地址


    方法的实现基本基于博主虚宇宸轩的【实现】树莓派开机自动向微信发消息报告ip地址(无第三方代理),具体原理和操作过程,请参考该博主的文章,写得很详细,原理解释的也很清楚。本文只是记录具体实现的过程中遇到的问题及其解决方式。

    环境:树莓派4B、树莓派官方Raspberry Pi OS Lite(32-bit)

    1、树莓派4B上存放的脚本源码

    创建一个脚本文件autoIP.sh(名字可以随便取),存放在树莓派4B的文件目录下,比如我放在了“/home/pi”目录下。脚本文件的内容如下:

    #!/bin/bash
    ###########################################
    #####      created by RichardYann     #####
    #####            2020-11-11           #####
    #####  EmaiL:yanrichard500@gmail.com  #####
    ###########################################
    
    # set PATH
    export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games"
    
    # Global Variables
    corpid=XXXXXXXXXXX	#替换成你自己的
    AgentId=XXXXXXXXXX #替换成你自己的
    Secret=XXXXXXXXXXX #替换成你自己的
    getTokenURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid&corpsecret=$Secret"
    
    # check netstat
    while true;do
    	if [ `hostname -I|grep 192.168` == "" ]; then
    		echo "net is null"
    		sleep 1
    	else
    		break	
    	fi
    done
    
    # get token
    temp=`curl $getTokenURL`
    if [ -n `echo $temp|awk -F \":\" '{print $3}'` ];then
    	access_token=`echo $temp|awk -F \":\" '{print $3}'|awk -F \",\" '{print $1}'`
    fi
    
    # get postURL
    PostURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$access_token"
    
    # get ip; change $1 to $2 if you wanna get ipv6 addr.(if you had)
    IP=$(echo `hostname -I|awk -F ' ' '{print $1}'`)
    
    DATE=$(echo `date`)
    # send post
    curl -H "Content-type: application/json" -X POST -d '{"touser":"@all","msgtype":"text","agentid":"'"$AgentId"'","text":{"content":"树莓派已经启动啦!!\n\n当前时间:'"$DATE"'\n\nIP地址是:'"$IP"'\n\n快点连接控制吧~~"},"safe":0}' $PostURL
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    针对原文博主代码的修改:
    1、博主的源代码在执行的时候,会循环报错“inet is not a command”,应该是循环判断网络连接状态那部分出了问题,我对这部分循环做了修改,保证正常执行。
    2、最后发送的消息部分添加了当前时间信息。

    2、脚本的开机自动执行实现方式

    1、执行crontab -e

    2、在最后一行添加如下代码:
    请添加图片描述
    3、关机重启,可以收到微信消息
    Alt

    一些说明:
    1、网上很多linux开机自动执行脚本的实现方法,我尝试了修改/etc/rc.local文件,在其最后添加脚本执行命令,但并不成功。
    2、crontab的方法,我按照原文博主的方式,也不行。但是使用crontab定时执行没有问题。
    3、调试中发现脚本可以顺利执行,只是手机收不到信息。感觉是在脚本执行时,由于刚刚开机,有些环境还未准备好,所以脚本执行没有结果。在网上查了很多资料,尝试在脚本执行命令前添加sleep 60,这次可以成功收到微信消息。我将时间改小为30s也可以成功运行。至于这个时间还能否继续再小,没有尝试。

  • 相关阅读:
    Qt QMetaObject::invokeMethod
    springcloud 项目搭建
    2022年加密货币调查状况调查报告
    10.30刷题笔记
    Ubuntu 22.04安装与配置
    常用面试/笔试开源小项目21~30
    5-硝基-二乙酸荧光素,CAS号: 14926-29-5
    cuDNN安装成功
    《PyTorch深度学习实践》第三讲 反向传播
    快来了解一下5个超实用的WPS表格操作技巧!
  • 原文地址:https://blog.csdn.net/weixin_51760563/article/details/127785022