hoochrel

openwrt添加定时任务判断系统是否重启并发送通知

原创  路由器 2022年11月20日 15:25:32 hoochrel 0评论 964

由于openwrt有时会抽风重启,特编写一个脚本判断通过uptime判断当前系统是否有重启过,并通过http发送通知给onebot等提醒自己。

脚本内容如下:

#!/bin/sh
uptime_file=/root/uptime
if [ ! -f $uptime_file ];then
  echo 0 > $uptime_file
fi
uptime=`ubus call system info | sed 's/,/\n/g' | grep "uptime" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g'`
if [ $uptime -gt 0 ];then
 old_time=`cat $uptime_file`
 if [ $uptime -lt $old_time ];then
   echo "the device was reboot at $uptime s ago."
   curl -H "Authorization:xxx" -H "xxx:xxx" -H "Content-Type: application/json" -d '{"user_id":"xxx","message":"the device was reboot at '"$uptime"'s ago,the device was running '$old_time's."}' -X POST  https://xxx/send_private_msg > result.txt
   result=`cat result.txt | sed 's/,/\n/g' | grep "retcode" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g'`
   if [ $result == 0 ];then
     echo $uptime > $uptime_file
     rm -f result.txt
   else
     echo 'the curl not success.'
   fi
 else 
   echo $uptime > $uptime_file
   echo "the device is run in $uptime s."
 fi
fi

修改url中的xxx为自己onebot的个人信息后将其加入到openwrt的定时任务中即可。

推荐定时为每分钟执行一次,即在定时任务中添加以下一行:

* * * * * /root/check_uptime.sh


原理:

    定时执行该脚本,获取当前系统已运行时间并保存到/root/uptime文件中,当系统重启后通过读取该文件中的值与当前已运行时间对比,若大于当前已运行时间,则表示系统重启过,发送通知给onebot,正常运行则更新uptime文件中的值。


注意:

    1.请确保/root目录可读写且空间足够

    2.请修改url中的xxx值为自己搭建的onebot服务信息

    3.请确保ubus call system info能获取到系统的uptime字段

    4.通知onebot为QQ机器人的node程序,可自行改为其他通知

评论区

face
😀 😃 😄 😁 😆 😅 🤣 😂 🙂 🙃 😉 😊 😇 🥰 😍 🤩 😘 😗 😙 😋 😛 😜 🤪 😝 🤑 🤗 🤭 🤫 🤔 🤐 🤨 😐 😑 😶 😏 😒 🙄 😬 🤥 😌 😔 😪 🤤 😴 😷 🤒 🤕 🤢 🤮 🤧 🥵 🥶 🥴 😵 🤯 🤠 🥳 😎 🤓 🧐 😕 😟 🙁 ☹️ 😮 😯 😲 😳 🥺 😦 😧 😨 😰 😥 😢 😭 😱 😖 😣 😞 😓 😩 😫 😤 😡 😠 🤬 😈 👿 💀 ☠️ 💩 🤡 👹 👺 👻 👽 👾 🤖 😺 😸 😹 😻 😼 😽 🙀 😿 😾 🙈 🙉 🙊 💋 💌 💘 💝 💖 💗 💓 💞 💕 💟 ❣️ 💔 ❤️ 🧡 💛 💚 💙 💜 🖤 💯 💢 💥 💫 💦 💨 🕳️ 🕳 💣 💬 👁️‍🗨️ 👁‍🗨️ 👁️‍🗨 👁‍🗨 🗨️ 🗨 🗯️ 🗯 💭 💤 👋
笑脸icon


选择主题