找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
首先这是 @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 收起 理由
phr*** + 1 几亿网民,我们俩竟然神奇的在恩山相遇了!来,1分也是分!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
来自手机 | 显示全部楼层
我在手机上用tasker也实现了同样的功能  用于转发短信

点评

什么样的功能?就是把短信转发到微信吗?  详情 回复 发表于 2020-8-6 12:53
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
感谢楼主的大力支持与鼎力相助
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
whoweasn 发表于 2020-8-6 08:33
我在手机上用tasker也实现了同样的功能  用于转发短信

什么样的功能?就是把短信转发到微信吗?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
可以实现360门铃推送的目的,解决原官方到下午不推送的问题

本帖子中包含更多资源

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

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 来自手机 | 显示全部楼层
本帖最后由 M_Yanhui 于 2020-8-6 14:25 编辑

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


为了不发生困惑,请为每台设备创建单独的应用
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 来自手机 | 显示全部楼层
请所以说请尽量一台设备创建一个应用
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
最新实现,微信向路由器发送消息,路由器收到后回复微信信息

本帖子中包含更多资源

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

×

点评

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.
回复

使用道具 举报

我来看看了。这个不错
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

这个真不错 能不能移植到openwrt上啊

点评

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

使用道具 举报

 楼主| 来自手机 | 显示全部楼层
whoweasn 发表于 2020-9-17 12:21
这个真不错 能不能移植到openwrt上啊

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

接收消息并回复或做出来其它动作需要启用 nginx+mysql+php 环境,使用的是企业微信的回调api,可以在微信发送命令消息让路由器执行,目前因为权限问题只能运行一部分命令

点评

可以分享一下这个吗?最近在折腾这些  详情 回复 发表于 2022-10-26 15:20
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

微信能接受消息就挺好了  比server酱保险点   我的是4g 路由  可以接收短信  能做个转发验证码什么的就更好了  能传递参数吗

点评

把 "消息" 替换成你要发送的变量 $xyz 例子 xyz=验证码6573 /etc/storage/weixin.sh Mavyhui $xyz  详情 回复 发表于 2020-9-18 12:44
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
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.
回复

使用道具 举报

收藏,回家后试试
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

能搞成插件就更好了。哈哈
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 06:39

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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