恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 811|回复: 13

使用企业微信来推送路由器信息,同步至个人微信,代替方糖方案

[复制链接]
发表于 2020-8-5 20:48 | 显示全部楼层 |阅读模式
首先这是 @kover 提出的要求,并合作测试,现在为1.0正式版

首先你要注册企业微信,创建自己的公司,可以随便写,然后创建一个应用,这方面就不多说了,网上有教程

脚本内容
替换你的  #企业ID 后边的内容,上传到路由器/etc/storage/weixin.sh

赋予执行权限 控制台执行 chmod +x /etc/storage/weixin.sh

控制台或加到自带脚本里运行 /etc/storage/weixin.sh Mavyhui "要发送的内容"   即可发送,Mavyhui为发送到我的微信名,如果是@all就全体成员

  1. #!/bin/bash
  2. # shell调用企业微信发送消息命令
  3. # ./weixin.sh ${人员} "消息"
  4. # 例:
  5. # ./weixin.sh [url=home.php?mod=space&uid=19415]@all[/url] "hello!"
  6. # ./weixin.sh maYun "hello!"
  7. # 注:
  8. # 消息中可以使用"\n"表示换行;
  9. # 消息中不可以使用空格;
  10. # 微信接口参数
  11. # 根据自己申请的企业微信上接口参数调整;

  12. # 设置环境变量
  13. export PATH='/etc/storage/bin:/tmp/script:/etc/storage/script:/opt/usr/sbin:/opt/usr/bin:/opt/sbin:/opt/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin'
  14. export LD_LIBRARY_PATH=/lib:/opt/lib

  15. expireTime=7200
  16. dbFile="/etc/storage/db.json"

  17. # 企业ID
  18. corpid='ID'
  19. # 应用凭证密钥corpsecret
  20. appsecret='appsecret'
  21. # 应用ID
  22. agentid=1000002

  23. timenow=`date +%Y-%m-%d//%H:%M:%S`

  24. if [ ! -f "$dbFile" ];then
  25.         touch "$dbFile"
  26. fi

  27. # 获取token
  28. req_time=`jq '.req_time' $dbFile`
  29. current_time=$(date +%s)
  30. refresh=false
  31. if [ ! -n "$req_time" ];then
  32.         refresh=true
  33. else
  34.         if [ $((current_time-req_time)) -gt $expireTime ];then
  35.         refresh=true
  36.         fi
  37. fi
  38. if $refresh ;then
  39.     # 获取accesstoken
  40.     token=$(curl "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${appsecret}" | jq -r '.access_token')
  41.     if [ -z "$token" ];then
  42.             logger -t "【企业微信】" "没有获取access_token,请检查参数值和jq安装状态,并手动删除缓存文件 rm /etc/storage/db.json"
  43.             exit
  44.     else
  45.             logger -t "【企业微信】" "获取access_token值:$token"
  46.         ## 保存文件
  47.         echo "" > $dbFile
  48.         echo -e "{" > $dbFile
  49.         echo -e "\t"access_token":"$token"," >> $dbFile
  50.             echo -e "\t"req_time":$current_time" >> $dbFile
  51.         echo -e "}" >> $dbFile
  52.     fi
  53. fi

  54. # 发送消息
  55. accesstoken=`jq -r '.access_token' $dbFile`

  56. msgsend_url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}"

  57. json_params="{"touser":"${1}","msgtype":"text","agentid":"${agentid}","text":{"content":"${2}\n时间${timenow}"},"safe":"0"}"

  58. # curl -X POST ${msgsend_url} -d ${json_params}

  59. req_msg=$(curl -X POST ${msgsend_url} -d ${json_params} | jq -r '.errcode')

  60. if [ "$req_msg" = "0" ];then
  61.     logger -t "【企业微信】" "推送成功,返回代码:$req_msg"
  62. else
  63.     logger -t "【企业微信】" "推送失败,返回代码:$req_msg"
  64. fi

  65. # 如果access_token不合法,重新获取
  66. if [ "$req_msg" = "40014" ];then
  67.     logger -t "【企业微信】" "错误:不合法的access_token,重新获取"
  68.     token=$(curl "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${appsecret}" | jq -r '.access_token')
  69.     if [ -z "$token" ];then
  70.             logger -t "【企业微信】" "第二次没有获取access_token,请检查参数值和jq安装状态,并手动删除缓存文件 rm /etc/storage/db.json"
  71.             exit
  72.     else
  73.             logger -t "【企业微信】" "第二次获取access_token值:$token"
  74.         ## 保存文件
  75.         echo "" > $dbFile
  76.         echo -e "{" > $dbFile
  77.         echo -e "\t"access_token":"$token"," >> $dbFile
  78.             echo -e "\t"req_time":$current_time" >> $dbFile
  79.         echo -e "}" >> $dbFile
  80.     fi
  81. # 发送消息
  82.     accesstoken=`jq -r '.access_token' $dbFile`

  83.     msgsend_url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}"

  84.     json_params="{"touser":"${1}","msgtype":"text","agentid":"${agentid}","text":{"content":"${2}\n时间${timenow}"},"safe":"0"}"

  85.     # curl -X POST ${msgsend_url} -d ${json_params}

  86.     req_msg=$(curl -X POST ${msgsend_url} -d ${json_params} | jq -r '.errcode')

  87.     if [ "$req_msg" = "0" ];then
  88.         logger -t "【企业微信】" "第二次推送成功,返回代码:$req_msg"
  89.     else
  90.         logger -t "【企业微信】" "第二次推送失败,返回代码:$req_msg"
  91.     fi
  92.         
  93. fi
复制代码


Screenshot_2020-08-05-20-42-23-06.jpg
Screenshot_2020-08-05-20-42-23-06.jpg
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-6 07:13 来自手机 | 显示全部楼层
6666谢谢楼主分享
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-6 08:33 来自手机 | 显示全部楼层
我在手机上用tasker也实现了同样的功能  用于转发短信

点评

什么样的功能?就是把短信转发到微信吗?  详情 回复 发表于 2020-8-6 12:53
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-6 12:51 来自手机 | 显示全部楼层
感谢楼主的大力支持与鼎力相助
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-6 12:53 来自手机 | 显示全部楼层
whoweasn 发表于 2020-8-6 08:33
我在手机上用tasker也实现了同样的功能  用于转发短信

什么样的功能?就是把短信转发到微信吗?
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-6 13:05 来自手机 | 显示全部楼层
可以实现360门铃推送的目的,解决原官方到下午不推送的问题
S00806-13033198.png
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-8-6 14:17 来自手机 | 显示全部楼层
本帖最后由 M_Yanhui 于 2020-8-6 14:25 编辑

微信文档说access_token的时效是2个小时,但是我实测用2台设备分开时段使用,间隔大半个小时,access_token值第一台在2个小时后已更新,第二台在超过2个小时后还在继续生效
按照脚本逻辑它失效后会触发二次发送,但是并没有,也就是说,新旧access_token时间重叠量几乎至少有大半个小时


为了不发生困惑,请为每台设备创建单独的应用
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-8-6 14:18 来自手机 | 显示全部楼层
请所以说请尽量一台设备创建一个应用
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-8-11 12:46 | 显示全部楼层
最新实现,微信向路由器发送消息,路由器收到后回复微信信息

Screenshot_2020-08-11-12-32-48-33.jpg
Screenshot_2020-08-11-12-33-48-28_a252b927494330cdc2c8ba3b3f952e5e.jpg
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-9-10 16:54 | 显示全部楼层
我来看看了。这个不错
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-9-17 12:21 | 显示全部楼层
这个真不错 能不能移植到openwrt上啊

点评

上边的脚本应该是linux平台都可以用的,可能要稍微改一下 接收消息并回复或做出来其它动作需要启用 nginx+mysql+php 环境,使用的是企业微信的回调api,可以在微信发送命令消息让路由器执行,目前因为权限问题只  详情 回复 发表于 2020-9-17 12:46
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-9-17 12:46 来自手机 | 显示全部楼层
whoweasn 发表于 2020-9-17 12:21
这个真不错 能不能移植到openwrt上啊

上边的脚本应该是linux平台都可以用的,可能要稍微改一下

接收消息并回复或做出来其它动作需要启用 nginx+mysql+php 环境,使用的是企业微信的回调api,可以在微信发送命令消息让路由器执行,目前因为权限问题只能运行一部分命令
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-9-17 14:12 | 显示全部楼层
微信能接受消息就挺好了  比server酱保险点   我的是4g 路由  可以接收短信  能做个转发验证码什么的就更好了  能传递参数吗

点评

把 "消息" 替换成你要发送的变量 $xyz 例子 xyz=验证码6573 /etc/storage/weixin.sh Mavyhui $xyz  详情 回复 发表于 2020-9-18 12:44
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-9-18 12:44 | 显示全部楼层
whoweasn 发表于 2020-9-17 14:12
微信能接受消息就挺好了  比server酱保险点   我的是4g 路由  可以接收短信  能做个转发验证码什么的就更好 ...

把 "消息" 替换成你要发送的变量 $xyz
例子
xyz="验证码6573"
/etc/storage/weixin.sh Mavyhui $xyz
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2020-9-22 22:21

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表