我的上一篇关于校园网多拨教程的全网收藏量达到1000+,感谢大家支持!这里对上一篇教程进行补充。主要包括:用脚本实现网络自动登陆、链路发生变化时LED指示灯变化和发送提醒消息。

一、准备工作

本篇教程用到路由器(OpenWrt固件)进行多拨,以下操作基于上一篇教程《拿什么拯救你,我的校园网——校园网优化之单线多拨》。

二、校园网自动登录

网络断开或者路由器重启之后,大部分校园网会要求重新登录,这时候设置mwan3的规则再去登录是比较麻烦的。这里以校园网为例,介绍如何实现自动登录。

2.1 获取登录请求

2.1.1 用网络日志捕获请求

登录就是向服务器发送登录请求,但是我们现在不知道这个请求长什么样,所以首先用浏览器网络日志或软件抓包来获取请求。

浏览器打开登录网页,按F12打开控制台,切换到“网络”Tab,勾选“保留日志”,回到网页里登录,找到控制台里登录(带login等字样)相关的请求,就可以找到请求的地址了。

2.1.2 分析登录请求

以这里的Dr认证为例,这个请求是get请求,请求里‘?’后面是以‘&’隔开的参数,比如”DDDDD”是帐号,后面登录时可能要更改一些参数,务必理解这些参数的意义,对于不确定的参数不要乱改!

2.1.3 用curl发送登录请求

curl是命令行工具,用来请求Web服务器。

OpenWrt安装curl,在终端输入curl +”刚刚复制的地址”

# 注:地址不一样,用自己刚刚复制的地址
curl "http://10.0.1.5/drcom/login?callback=dr1003&DDDDD=帐号&upass=密码&0
MKKey=123456"

回车执行,不出意外的话已经成功登录了,可以根据请求的响应和网络情况确定。

2.2 断网自动登录

拿到请求地址,就可以在合适的地方发送登录请求了,这里以网络断开时为例。

2.2.1 找地方写登录脚本

利用mwan3的通知(notify)可以很方便地在网络连接、网络断开等时候执行脚本,就不用自己写定时触发的脚本了。通知的用法如下图:

简单来说就是联网、断网等时候会触发这个脚本,同时传入几个环境变量供脚本使用。那么我们要做的就是用curl指定传入的接口信息实现指定接口登录。

2.2.2 指定接口发送请求

curl可以指定用哪个接口发送请求,只需要在命令中加入”interface”参数指定接口即可,这里用到环境变量${DEVICE}

# 注:地址不一样,用自己刚刚复制的地址
curl --interface ${DEVICE} "http://10.0.1.5/drcom/login?callback=dr1003&DDDDD=帐号&upass=密码&0MKKey=123456"

2.2.3 形成脚本

加入判断条件以及用于“翻译”命令的eval 形成脚本:

if [ $ACTION == disconnected ] && [ -n "$DEVICE" ]; thenlogger -p warn -t mwan3-notify "Auto login on $DEVICE..." # 记录日志eval "curl --interface ${DEVICE} \"http://10.0.1.5/drcom/login?callback=dr1003&DDDDD=帐号&upass=密码&0MKKey=123456\"" # curl指定接口发送请求
fi

点击保存,重启mwan3服务或重启路由器看是否可以在断网时自动登录。

三、LED管理

如果你的路由器带有LED指示灯,可以利用上面的脚本顺便控制LED的状态。OpenWrt自定义指示灯的触发器有5种:

这里以“指示灯在网络通的时候监测网络活动,网络不通时常亮”为例,脚本可以像这样写:

if [ $ACTION == connected ] || [ $ACTION == disconnected ]; thencase $INTERFACE invwan0) led="system.led_internet" # 待修改:事件是在vwan0发生的,对应LED(看下一段讲解);;vwan1) led="system.cfg048bba" # 待修改;;vwan2) led="system.cfg058bba" # 待修改;;*)  logger -p warn -t mwan3-notify "There is no LED for $INTERFACE !"exit;;esacif [ $ACTION == connected ]; theneval "uci set ${led}.trigger='netdev'"eval "uci set ${led}.dev='${DEVICE}'"eval "uci add_list ${led}.mode='tx'"uci commit/etc/init.d/led restartelif [ $ACTION == disconnected ]; theneval "uci del ${led}.dev"eval "uci del ${led}.mode"eval "uci set ${led}.trigger='default-on'"uci commit/etc/init.d/led restartfi
fi

其中待修改的地方已经在上方标出,vwanx 是虚拟接口名,led可以在 系统-LED配置 做修改后点右上方的更改记录看到:

四、ntfy链路变化提醒

同样道理,也可以顺便在联网、断网时向手机等设备发送通知消息。这里用到ntfy,这是一个基于HTTP的免费开源pub-sub服务,关于其详细用法可以在官网(https://ntfy.sh/)查看。

ntfy几乎不用配置,通过简单的订阅和定义消息即可使用。

4.1 订阅主题

首先在手机或其他设备订阅主题,主题名称最好有较高的区分度:

4.2 在脚本中发送post请求

还是在上面写脚本的地方,加入并修改下面的联网通知脚本:

if [ $ACTION == disconnected ]; theneval "curl -H \"Tags: warning\" -H \"Title:$INTERFACE disconnected\" -d \"OpenWrt\" ntfy.sh/TODO" # 将末尾的TODO改成你订阅的主题名称
fi

4.3 测试请求

任一接口断网,手机收到提醒消息:

五、总结

这篇教程是我上一篇教程《拿什么拯救你,我的校园网——校园网优化之单线多拨》的补充教程,主要涉及OpenWrt多拨插件mwan3的自动化脚本设置。由于校园网和设备等的差异,本文仅举出了一些样例,可以根据思路进行拓展。同时如果有任何问题或者建议都可以在评论区提出,谢谢大家!

讲讲多拨的额外骚操作(多拨附加教程)相关推荐

  1. 25个python专属骚操作

    本文我总结了25个python专属骚操作,实属提高效率/同事吹牛只利器,确定不收藏吗? 一.原地交换 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法 x, y = 10, 20 ...

  2. 数据治理项目失败,90%都是被这29条骚操作搞垮的

    数字化时代,数据作为新的生产要素受到了各界前所未有的重视. 随着数据越来越多,怎么管好.用好数据,让数据发挥价值,成为了很多企业的一个难题,而且还是一个必选题! 这就引出了数据治理. 有效的数据治理可 ...

  3. lisp 提取字符串中的數字_Redis 数据结构之字符串的那些骚操作

    Redis 字符串底层用的是 sds 结构,该结构同 c 语言的字符串相比,其优点是可以节省内存分配的次数,还可以... 这样写是不是读起来很无聊?这些都是别人咀嚼过后,经过一轮两轮三轮的再次咀嚼,吐 ...

  4. 腾讯云轻量与CVM内网互通骚操作

    本文分四段:内网互联介绍,开通教程,数据测试,骚操作. 内网互联介绍 今天腾讯云轻量和CVM已经正式开始同地区内网互通了,这一变化又提高了轻量服务器的可玩性,采用的是云联网(CCN)的形式.之前也介绍 ...

  5. 聊聊那些年的骚操作!!!

    作者|莱乌 适逢过年,技术文章也没多少人愿意耐着性子看,那就聊聊我那些年的骚操作.给大家讲讲故事的同时,如果能给列位有所启发,那这篇文章也算是没有白费我的脑汁子. 今天要讲的是有关那些年我赚钱的一些骚 ...

  6. 编程的各种骚操作(一)

    一.前言 写这篇博客,主要是想分享一些编程小技巧,可以帮助小伙伴们一起学习一些看起来很骚,又很牛的操作,让你在笔试或者教别人时,快速得到别人的认可,这就是我的目的,让别人听懂你说的,信服你说的,比你自 ...

  7. 99%的人都不知道的pandas骚操作(一)

    作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 pandas有一种功能非常强大的方法,它就是accessor,可以将它理解为一种属性接口,通过它可以获得额外的方法. ...

  8. 法国队夺冠!央视转播背后的骚操作

    法国队夺冠!央视转播背后的骚操作 文 | 史中 2018 世界杯,法国队第二次夺冠了.(我从没见过法国队夺冠,上次法国队夺冠的时候,你中哥还没出生呢.) 我和几位朋友,是在不同地方看的法国和克罗地亚这 ...

  9. 计算机课gif,GIF动图:一同学发来开学第一天计算机课就大秀骚操作,全班同学都五体涂地...

    原标题:GIF动图:一同学发来开学第一天计算机课就大秀骚操作,全班同学都五体涂地 一同学发来开学第一天计算机课就大秀骚操作,全班同学都懵逼五体涂地了 主人偷偷出门被大鹅看见,直勾勾的跑出来 这谁的责任 ...

最新文章

  1. Python-字符串操作方法 [转]
  2. 二叉树中序遍历方法实现
  3. nmap脚本(nse)原理和编写
  4. 022_html计算机输出标签
  5. 全球及中国手机便携式移动电源行业营销模式及投资竞争力分析报告2021-2027年版
  6. 操作系统(三十七)基本分页存储的概念
  7. 实现java RPC框架
  8. Coil - Google推荐的协程图片加载库
  9. json_encode 注意点
  10. MakersPlace将启动1美元特价的Beeple限量NFT抽奖活动
  11. 【leetcode】length of last word (easy)
  12. 如何卸载windows自带的输入法
  13. DB9封装、TTL/CMOS/RS232电平基础
  14. Cura gui 代码编译流程
  15. Web_制作页面开场动画并解决自动播放问题
  16. hypermesh 连接单元_HRS连接器U.FL-R-SMT-1(10)插座样图查询
  17. Android UI + Function
  18. pandas等导入excel后 日期时间无法直接运算的问题 (str转datetime的方法)
  19. 单片机c语言中枚举,嵌入式开发-枚举详解---朱有鹏
  20. Deniable Encryption(CRYPTO 97‘) [Ran Canetti, Cynthia Dwork, Moni Noar, Rafail Ostrovsky] 可否认加密

热门文章

  1. HTTP解析库http-parser简介及使用
  2. poj1125 Stockbroker Grapevine Floyd算法
  3. portSentry入侵检测工具
  4. Unity中抛物线的实现
  5. SQP质量验厂有哪些要求?
  6. UVA11134_Fabled Rooks
  7. 基于英雄大作战龙奥的Unity骨骼动画初探
  8. vulnstack_ATTCK1渗透
  9. 双方博弈复制动态方程(y-z,z=0.3,z=0.5,z=0.7)与matlab数值仿真——matlab2016a版本
  10. python和按键精灵自动化测试_自动化测试程序和按键精灵