右手边 发表于 2017-5-22 11:45:22

RT-AC66U_B1 开机自动执行脚本

最近在路由器中写了一些脚本希望开机的时候能够自动运行,参考 aria2 开机自启动的方案,特地写了这个教程分享给大家。
首先你得安装Download Master 和开启 telnet 。
具体怎么开启我就不再描述了,可以搜索论坛中的相关贴文。

1. 准备脚本
      将脚本名字重命名为 S+两个数字+名称, 比如 S50test。
2. 将脚本放置到 /opt/etc/init.d/ 中
**** Hidden Message *****
5. 然后你再重启路由器看看,脚本已经很愉快的跑起来了。

本教程仅在 RT-AC66U_B1 上测试通过,其他机种请自行测试。

关键部分隐藏了,回复可见啦:lol 如果你有更好的方法欢迎您与我讨论!



514422325 发表于 2017-5-22 14:31:32

{:2_31:}

Jack 发表于 2017-5-22 14:41:37

:loveliness:

x6d 发表于 2017-5-22 14:49:23

学习楼主的伟大杰做,请问这个不刷梅林的 原厂固件也适用吗

Jack 发表于 2017-5-22 14:56:39

本帖最后由 Jack 于 2017-5-22 09:19 编辑

赋予可执行权限 直接使用 FAT32 格式 USB 就不用这个命令了吧?
最后一行命令没看懂,开启脚本?

将此脚本设为开机启动需要做些什么,以及如何编辑脚本,请赐教

右手边 发表于 2017-5-22 15:10:43

x6d 发表于 2017-5-22 14:49
学习楼主的伟大杰做,请问这个不刷梅林的 原厂固件也适用吗

就是基于原厂固件的

右手边 发表于 2017-5-22 15:33:32

Jack 发表于 2017-5-22 14:56
赋予可执行权限 直接使用 FAT32 格式 USB 就不需要这样做。
最后一行命令没看懂,开启脚本?



1. 最后一行,直接输就可以了,这个是利用 Download Master 自启动的原理来使用的。
          系统默认脚本会去确认 test 这个app 是否启用,是检查Enable 这个值是否为yes 来判断的。所以缺少了最后一行就没有办法使脚本启动。

2. 印象中华硕路由官方固件更改hosts 好像是无法对下端的设备生效的,不过你可以试一下。

3. 这个脚本直接跑的话是没有什么问题的。不过需要注意下linux 和 windows 换行格式的区别。如果是windows 的换行格式的话,在router 上没法直接运行。你可以用notepad++ 对于文件格式进行转换

Jack 发表于 2017-5-22 15:39:08

本帖最后由 Jack 于 2017-5-22 08:48 编辑

右手边 发表于 2017-5-22 08:33
1. 最后一行,直接输就可以了,这个是利用 Download Master 自启动的原理来使用的。
          系统默认 ...
hosts 可以生效,Telnet 直接敲入命令可以让内网指定 hosts,前提是设备没有独立的 DNS。
换行这个并不对我构成问题,不过谢谢您的提醒。

我现在的问题是,将脚本保存后,也无法自动运行。我在系统日志中看到了 S50XXXX stop,这是唯一的提及脚本的一行信息,没有开始,只有结束。
而 hosts 显然没有随着开机更新。

我试着延时脚本,因为存在刚启动后没有网络可能性。甚至开机启动脚本指向保存在其他目录真正含有 hosts 命令的脚本。
都失败了,最终结果是,脚本确实运行了,但是就是没有修改。

我不知道哪里错了,在 telnet 下完全可以运行。

我在 telnet 下执行这样的命令 /opt/etc/init.d/S50XXXX start 都可以实现脚本顺利运行,并且达到预期目的。但是自动启动就不能,显然脚本没有错误。

不知道我修改后的这行脚本是否不适用于开机启动?是否只适用于敲入?#!/bin/sh
sleep 60
wget -q https://example.com/hosts -O /etc/hosts --no-check-certificate

右手边 发表于 2017-5-22 16:05:50

本帖最后由 右手边 于 2017-5-22 16:10 编辑

Jack 发表于 2017-5-22 15:39
hosts 可以生效,Telnet 直接敲入命令可以让内网指定 hosts,前提是设备没有独立的 DNS。
换行这个并不对 ...
因为在开机启动的时候,router 本身也会去对 hosts 这个文件重新写入。
如果你脚本执行的时间在系统更改hosts 之前的话,是会被覆盖的。
你在sleep 60 之后再加一个wait 试一下。我之前有遇到过前一个指令没有执行完成,就去执行第二个指令的情况。如果还不行的话,再试着将sleep 的时间延长。

Jack 发表于 2017-5-22 16:09:05

本帖最后由 Jack 于 2017-5-22 09:10 编辑

右手边 发表于 2017-5-22 09:05
因为在开机启动的时候,router 本身也会去对 hosts 这个文件重新写入。
如果你脚本执行的时间在系统更改h ...#!/bin/sh
sleep 60
wait
wget -q https://example.com/hosts -O /etc/hosts --no-check-certificate您的意思是这样?

不止是修改 hosts 其他脚本也遇到了相同的问题。就是无法被运行,但是直接通过命令执行脚本文件,或者直接用命令敲入都能运行。唯独开启无法运行。您认为错误可能出在哪里?
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: RT-AC66U_B1 开机自动执行脚本