写OpenWRT的脚本时,需要用到一些重启命令
以下的命令中的参数"wan",是基于wan口的名称为"WAN"
ssh 登录到openwrt上。
执行以下命令:
-
重启路由
/sbin/reboot
, ssh 连接立刻就会断开。
-
重启所有网络
/etc/init.d/network restart
, 这个命令会导致 ssh 连接卡住(约卡3-5秒),等到网络重启之后,ssh才会恢复。本机执行没有问题。
-
因为
network restart
先会
ifdown -a
把所有网络/网卡都停掉,再全部网卡重新启动。
-
重拨wan
/sbin/ifup wan
, 等于
ifdown wan && ifup wan
。这个命令执行很快,ssh连接不卡,且立即就返回。wan口大约10秒后就换了个IP,对应的wan6也会换IP。
-
这个 ifup 命令,最终是通过
ubus call network.interface down '{"interface":"wan"}'
+
ubus call network.interface up '{"interface":"wan"}'
执行的。
-
显式的执行
/sbin/ifdown wan && /sbin/ifup wan
也是没有问题的。
-
实际使用中,仅执行
ifup wan
,有时发现ipv4不会变,仅ipv6变。所以为了更换IP,
ifdown wan;sleep 2;ifup wan
更好。
-
在web界面Interfaces页面,点击WAN对应的 "Restart" 按键。其实执行的就是
/sbin/ifup wan
-
在web界面Interfaces页面,点击WAN对应的 "Stop" 按键。其实执行的就是
/sbin/ifdown wan
-
重启wifi
/sbin/wifi down && /sbin/wifi up
-
在Linux中创建一个 key, 用
ssh-keygen -t rsa -b 1024 -f opwrt
, 然后把 opwrt.pub 中的内容 copy 到 路由器的
/etc/dropbear/authorized_keys
文件中。
-
shell脚本,重启路由器就执行
ssh -i opwrt root@192.168.1.1 "/sbin/reboot"
-
shell脚本,重拨wan口就执行
ssh -i opwrt root@192.168.1.1 "/sbin/ifup wan"
-
python3脚本,
import subprocess
然后
subprocess.getoutput('ssh -i opwrt root@192.168.1.1 "/sbin/ifup wan" ')
-
另: 以上的 ssh 可以再带上一个参数
ssh -o "ConnectTimeout=5"
-
在路由器中,
-
写shell脚本,直接就执行
reboot
或者
ifup wan
。
-
lua 脚本,首先
require("luci.sys")
, 然后执行
luci.sys.exec("/sbin/ifup wan")
-
windows 的 bat 批处理
-
可以考虑用 putty的命令行版 plink.exe 去ssh登录执行命令。(可以用 puttygen.exe 去生成key,放到authorized_keys中 )
-
如果频繁掉线,可以考虑修改这两个配置项。(修改方法,自行搜索)
-
network -> interface -> WAN (pppoe) -> EDIT -> Advanced Settings ->
LCP echo failure threshold
和
LCP echo interval
网络 -> 接口 -> WAN (pppoe) -> 编辑 -> 高级设置 ->
LCP 响应故障阀值
和
LCP 响应间隔
-
/etc/ppp/option 中的
lcp-echo-failure
和
lcp-echo-interval
-
有时会出现(偶尔),wan连接正常,但无法访问网络。可以考虑写个脚本,定时执行。
-
思路是:
先访问一下百度,看是否正常,再访问一下搜狗,再访问一下163。如果三个站都无法访问,就执行
ifup wan
重拨。
测试访问几个站,自己决定,测试哪几个站,自己挑选。用shell编程即可,装个完整版wget,用wget访问,判断返回值,就知道访问是否成功。
记得设置timeout参数,wget的默认timeout好像是60秒,太长了。
还要设置重试次数大于2,防止第一次访问因dns查询返回太慢而失败。
-
以下给出一个
例子参考
,需要
opkg install wget ca-bundle
支持。
然后放入 crontab 中定时执行
*/10 * * * * /bin/sh /root/chk_net_redail.sh
#!/bin/sh
# filename: /root/chk_net_redail.sh
# 4=network error/refused/timeout/dns err/
# need "opkg install wget ca-bundle"
count=0
URLs='http://baidu.com http://163.com http://www.qq.com http://sogou.com'
for host in $URLs ; do
#echo $host
# wget -t2 这个参数要>=2, 防止第一次访问dns解析超时,而导致失败
wget -q -T3 -t3 --method=HEAD --max-redirect=0 "$host"
if [ 4 -eq $? ]; then
echo $(date +%F_%T%z) $host 'error.' >> /root/log.redail
count=$((count+1))
break
URL_cnt=$(echo $URLs|wc -w)
if [ $count -ge $URL_cnt ]; then
echo $(date +%F_%T%z) redail >> /root/log.redail
ifdown wan; sleep 1; ifup wan
安装和相关的samba 共享等配置可以看另一篇:https://blog.csdn.net/lggirls/article/details/106228566
这里使用的是Aria2。 transmission的配置还没有搞清楚
1. 所需安装的插件 。 圈出来的两个是 web gui界面工具,也就是和打开迅雷软件类似的图形化界面
2.基本配置。 退出再登录OpenWRT管理界面就会在 服务 菜单里面出现
注意RPC的配置,也就是登录web gui,可视化图形界面的配置。 对于 ari...
因为从100M城中村网线,更换为了电信500Mbps光纤宽带,所以原来的家用路由器,华为B315s-936 始终无法发挥出来,最高只是测出过300Mbps,所以有了将原有的局域网NAS增加一个网卡,作为路由器的想法。经过一番小折腾,最终实现了500Mbps 的测得网速,以及将原有的共享内容继续共享。
1.华为B315s-936 作为了中继路由器
2. 作为NAS服务器并提供samba服务的PC机的lspci信息. 是华擎的J4205主板,另购一块TP-link的 千兆有线网卡8161
00:0.
openwrt中的service_triggers函数用于在特定事件发生时触发服务进程的操作。其中,procd_add_interface_trigger用于在网络接口状态改变时触发服务进程的操作,procd_add_reload_trigger用于在系统配置发生改变时触发服务进程的操作。具体实现可以参考以下示例代码:
```shell
#!/bin/sh /etc/rc.common
START=99
STOP=15
start() {
procd_open_instance
procd_set_param command /usr/bin/your_service
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param reload_signal "USR2"
procd_set_param pidfile /var/run/your_service.pid
procd_set_param netdev eth0.2
procd_close_instance
service_triggers() {
procd_add_interface_trigger "interface.*" "wan"
procd_add_reload_trigger "network"