请选择 进入手机版 | 继续访问电脑版

华硕路由爱好者社区

 找回密码
 立即注册

手机号码,快捷登录

查看: 13462|回复: 202

[教程] RT-AC66U_B1 开机自动执行脚本

  [复制链接]

16

主题

115

帖子

464

积分

版主

Rank: 7Rank: 7Rank: 7

积分
464
发表于 2017-5-22 11:45:22 | 显示全部楼层 |阅读模式
最近在路由器中写了一些脚本希望开机的时候能够自动运行,参考 aria2 开机自启动的方案,特地写了这个教程分享给大家。
首先你得安装Download Master 和开启 telnet 。
具体怎么开启我就不再描述了,可以搜索论坛中的相关贴文。

1. 准备脚本
      将脚本名字重命名为 S+两个数字+名称, 比如 S50test。
2. 将脚本放置到 /opt/etc/init.d/ 中
游客,如果您要查看本帖隐藏内容请回复

5. 然后你再重启路由器看看,脚本已经很愉快的跑起来了。

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

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



280

主题

1195

帖子

3740

积分

论坛元老

有朋自远方来,不亦乐乎?

Rank: 8Rank: 8

积分
3740

RT-AC88URT-AC68U

QQ
发表于 2017-5-22 14:31:32 | 显示全部楼层
回复

使用道具 举报

13

主题

245

帖子

416

积分

中级会员

Rank: 3Rank: 3

积分
416
发表于 2017-5-22 14:41:37 | 显示全部楼层
回复

使用道具 举报

1

主题

10

帖子

41

积分

新手上路

Rank: 1

积分
41
发表于 2017-5-22 14:49:23 | 显示全部楼层
学习楼主的伟大杰做,请问这个不刷梅林的 原厂固件也适用吗

13

主题

245

帖子

416

积分

中级会员

Rank: 3Rank: 3

积分
416
发表于 2017-5-22 14:56:39 | 显示全部楼层
本帖最后由 Jack 于 2017-5-22 09:19 编辑

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

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

16

主题

115

帖子

464

积分

版主

Rank: 7Rank: 7Rank: 7

积分
464
 楼主| 发表于 2017-5-22 15:10:43 | 显示全部楼层
x6d 发表于 2017-5-22 14:49
学习楼主的伟大杰做,请问这个不刷梅林的 原厂固件也适用吗

就是基于原厂固件的

16

主题

115

帖子

464

积分

版主

Rank: 7Rank: 7Rank: 7

积分
464
 楼主| 发表于 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++ 对于文件格式进行转换

13

主题

245

帖子

416

积分

中级会员

Rank: 3Rank: 3

积分
416
发表于 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 都可以实现脚本顺利运行,并且达到预期目的。但是自动启动就不能,显然脚本没有错误。

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

16

主题

115

帖子

464

积分

版主

Rank: 7Rank: 7Rank: 7

积分
464
 楼主| 发表于 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 的时间延长。

13

主题

245

帖子

416

积分

中级会员

Rank: 3Rank: 3

积分
416
发表于 2017-5-22 16:09:05 | 显示全部楼层
本帖最后由 Jack 于 2017-5-22 09:10 编辑
右手边 发表于 2017-5-22 09:05
因为在开机启动的时候,router 本身也会去对 hosts 这个文件重新写入。
如果你脚本执行的时间在系统更改h ...
  1. #!/bin/sh
  2. sleep 60
  3. wait
  4. wget -q https://example.com/hosts -O /etc/hosts --no-check-certificate
复制代码
您的意思是这样?

不止是修改 hosts 其他脚本也遇到了相同的问题。就是无法被运行,但是直接通过命令执行脚本文件,或者直接用命令敲入都能运行。唯独开启无法运行。您认为错误可能出在哪里?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|华硕路由爱好者社区 ( 苏ICP备16010857号-1 )苏公网安备 32050502000499号

GMT+8, 2018-11-22 03:55 , Processed in 0.034171 second(s), 30 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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