02 6 月 2020

openwr热插拔脚本-wan变化触发

最近遇到了一些小问题,我的tp703n(已经刷了openwrt)在单位usb连接手机自动共享网络到wifi。这种功能确实很好用,既能给手机充电也能直接共享网络(非手机热点,热点多设备非常不稳定)。

但是在用某酸酸插件时,会出现当我拔下手机出去有事一段时间后,回来该插件就会出问题,需要手动重启插件解决。这个体验太差了,所以想到直接写个简单热插拔的脚本监听wan接口,当wan接口发生变化时,就重启该插件。

这个思路源自openwrt的著名插件ddns的设计,ddns应该是全世界最出名最常用的插件了,非常好用。ddns,主要用于将域名动态绑定到路由器的ip上。该插件有个智能功能,就是监听wan接口事件,一旦出现断线重启,就会重启插件,实现更新ip到dns的功能。

具体实操很简单。

#在/etc/hotplug.d/iface目录新建一个脚本99-ssr

vi /etc/hotplug.d/iface/99-ssr

#写入以下内容即可

#!/bin/bash
if [ $ACTION=ifup -a $INTERFACE=wan ]; then
  /etc/init.d/shadowsocksr restart
fi

解释下/etc/hotplug.d/iface 这个目录是openwrt监听wan或者lan接口的脚本目录,而且目录里脚本的执行顺序按照数字的顺序来的。所以上面99开头的脚本就是希望最后时间里去执行该脚本。

至于脚本内容那就很简单了,就是对于wan网络接口出现up上线的时候,执行目标插件的重启。