找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 7790|回复: 30

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

[复制链接]
发表于 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
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
phrnet + 1 几亿网民,我们俩竟然神奇的在恩山相遇了!来,1分也是分!

查看全部评分

我的恩山、我的无线 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门铃推送的目的,解决原官方到下午不推送的问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 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 | 显示全部楼层
最新实现,微信向路由器发送消息,路由器收到后回复微信信息

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

smstools 的push 脚本是这样的: #!/bin/sh if [ "$1" == "RECEIVED" ]; then FROM=$(grep "From:" $2) TEXT=$(sed -e '1,/^$/ d' < "$2" | iconv -f UNICODEBIG -t UTF-8) curl -d "text=$FROM&desp=$  详情 回复 发表于 2020-10-28 13:30
我的恩山、我的无线 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,可以在微信发送命令消息让路由器执行,目前因为权限问题只能运行一部分命令

点评

可以分享一下这个吗?最近在折腾这些  详情 回复 发表于 2022-10-26 15:20
我的恩山、我的无线 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

点评

不行了, opwrt 上缺jq ,需要编译,搞不定啦 root@OpenWrt:~# /etc/storage/weixin.sh Mavyhui "要发送的内容111" /etc/storage/weixin.sh: line 34: jq: not found /etc/storage/weixin.sh: line 59: jq: no  详情 回复 发表于 2020-10-31 13:22
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-10-3 15:03 | 显示全部楼层
收藏,回家后试试
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-10-9 10:14 | 显示全部楼层
能搞成插件就更好了。哈哈
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-19 14:12

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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