KoolShare

 找回密码
 立即注册
搜索
查看: 36514|回复: 165

[精品存档] 华硕路由器官方固件开机自动运行脚本方法

  [复制链接]

15

主题

1308

帖子

3100

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
1
魔力币
1432
魔法值
15
注册时间
2017-4-24
发表于 2017-5-25 17:44:39 | 显示全部楼层 |阅读模式
本帖最后由 Jack- 于 2017-5-26 00:04 编辑

Asuswrt-Merlin (梅林)固件我以前玩过、国人改版的梅林我也玩过,因为没有使用代理隧道的需求,所以很早之前我就不使用第三方固件了。在我使用官方固件的这些时期,我一直很困惑,怎样才能像之前一样运行脚本?当然,我可以使用 telnet 或者 SSH 执行命令,但太费事了,而且没有办法按照我的需求开机自动运行,直到几天前我找到了方法,现在将我的经验分享出来。
以下教程以 “华硕路由器原厂固件开机后自动修改 hosts 文件” 为例。
你需要准备:一个 U盘(移动硬盘也可)一台路由器一台电脑
此教程当然也适用于 Asuswrt-Merlin 固件,Asuswrt-Merlin 拥有断电后仍可保留数据的 JFFS 分区,但是 Asuswrt-Merlin 在 JFFS 百科 中这样写道:
I do not recommend doing frequent writes to this area, as it will prematurely wear out the flash chip. This is a good place to put files that are written once like scripts or kernel modules, or that rarely get written to. Do not put files that get constantly written to (such as high activity logfiles) - store these on a USB disk instead. Replacing a worn out USB flash disk is much cheaper than replacing the whole router if flash sectors get worn out - they have a limited number of write cycles.
大意是:
我不建议经常向 JFFS 分区写入数据,这会使路由器的闪存过早报废,JFFS 分区适合存入如脚本或内核模块等写入量很小的文件,如果你要不断地存储数据(比如大量日志文件)我建议存放到 U盘 上,虽然两者写入量都是有限的,但更换 U盘 要比更换路由器闪存芯片成本更低。
所以,你可以用此教程将需要自启动的脚本等文件统统保存到 U盘 上,对于使用 Asuswrt-Merlin 固件的玩家来说,这是对路由器的一种保护。


在教程开始之前你需要知道:我是一个小白,不懂得如何编写脚本、甚至看不懂脚本,我只会拿别人现成的脚本放到路由器中。为了实现这篇教程的核心思想 “华硕路由器官方固件开机自动运行脚本” 我曾四处寻求帮助,我很高兴通过各种类型的帮助最终实现了目标,没有这些帮助就没有这篇教程,这篇教程将以叙事的形式展现,我将会在本篇教程中注明每一个帮助信息。

© 如果需要以学习目的转载、复制这篇教程,请出于尊重保留所有的段落,以及每一个注明信息。此篇教程禁止用于任何商业形式。

评分

5

查看全部评分

15

主题

1308

帖子

3100

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
1
魔力币
1432
魔法值
15
注册时间
2017-4-24
 楼主| 发表于 2017-5-25 17:45:11 | 显示全部楼层
本帖最后由 Jack- 于 2017-5-27 19:30 编辑

本教程重在寻找过程,如果你在意最终结果,请直接看本文最后一段脚本。
  
在几天前,我看到了这篇文章《ac68等arm迅雷、aria2安装小白教程及官固自启动插件教程》[1],标题中的 “官固自启动” 让我非常感兴趣,通过这篇文章我了解到:华硕路由器的 Download Master(下载大师)功能保存在 U 盘上,而华硕官方固件(或 Asuswrt-Merlin)可以运行 U 盘上的脚本,我们也可以将自己的脚本放在 U 盘上实现开机自动运行。
具体是如何实现的?
我向 52asus 的一位管理者 Master 寻求帮助,收到了如下回复
你尝试一下将任意脚本放到/opt/etc/init.d/ 中,并且以 S 开头
相对于 U 盘,是放到了 asusware.arm/etc/init.d/ 目录下
他建议我参考这篇文章《RT-AC66UB1 开机自动执行脚本》[2],这篇文章初期对我的帮助价值非常大,很贴近最终答案,不过由于后面有更好地解决方法,这篇文章不会被用于本教程。
  
于是,我就想到,我之前在 Asuswrt-Merlin 固件时用到的屏蔽广告脚本《AdBlocking with combined hosts file》[3] 能否在我当前官方固件上运行?这个脚本主要是基于修改 hosts 文件实现,官方固件也可以修改 hosts,但是每次开机后 hosts 文件都会被刷新重置 [4],所有保存的信息会被清空。那么我能否利用上方发现的自启动脚本方法,在每次开机清空后再重新写入新的信息到 hosts 文件?答案是可行的。
  
仔细分析《AdBlocking with combined hosts file》文章,我看到了屏蔽广告的 hosts 来源,分别是:
(此处有一个链接无法发出)
http://someonewhocares.org/hosts/zero/hosts
http://pgl.yoyo.org/adservers/se ... &mimetype=plaintext
不过原文中的命令不适用于我,我首先需要做的是:找一个命令把这些链接中的内容写入到路由器的 hosts 中。
  
经过了一番寻找,我找到了这两篇文章《分享一个OpenWRT路由器的自动更新hosts方法,无需脚本》[5] 和《路由器自动修改hosts脚本》[6],这两篇文章都是国人写的,里面命令对我十分有用。
借助《wget 指令用法與教學》[7] 对命令进行了简单的修改,我得到了可以用于路由器更新 hosts 的命令:
  1. wget -q "http://someonewhocares.org/hosts/zero/hosts" "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext" -O /etc/hosts
复制代码
并且将其制作为脚本:
  1. #!/bin/sh
  2. wget -q  "http://someonewhocares.org/hosts/zero/hosts" "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext" -O /etc/hosts
复制代码
命令运行成功,在路由器中 ping 相应网址也得到了正确反馈,但我很快发现,为何我的电脑仍能看到广告?我在电脑中 ping 这些网站发现并没有被屏蔽。于是我开始找原因,在上面那些包含命令的文章中,我注意到了几个关键的命令 service restart_dnsmasq 和 /etc/init.d/dnsmasq restart 这些命令都是用来重启 dnsmasq 的,似乎必须重启后才能对客户端生效,前一个命令重启后会导致 hosts 如同开机般被清空,后者则不适用于华硕路由器。我又重新开始寻找新的命令。
  
在和《RT-AC66UB1 开机自动执行脚本》作者 右手边 交流中,他为我提供了一个新的命令,并发布了一篇教程《如何更改华硕路由器的 hosts》[8],这个新的命令完美地解决了 hosts 修改后不能生效的问题:
  1. killall -SIGHUP dnsmasq
复制代码
既然有了这个命令,那么就把它加入脚本
  1. #!/bin/sh
  2. wget -q "http://someonewhocares.org/hosts/zero/hosts" "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext" -O /etc/hosts
  3. sleep 30
  4. killall -SIGHUP dnsmasq
复制代码
实践证明脚本完美运行。既然可以运行,那么让我来将其改造为开机启动。在本文开头提到的开机启动方法固然可以,但是过于复杂,因为需要基于各种库,如果用不到 Download Master,那些库就没有必要,毕竟那么多的库会拖慢开机时间。
  
因此我开始寻找一个更好地方法,在寻找中我看到了一个新的文章《Hacking Functionality into ASUSWRT Routers》[9] 其中这样写道:
When a USB storage device is inserted into the router’s USB port, the rc system daemon mounts the partition and checks for the existence of an asusware/.asusrouter script on the mount point. If it exists, the asusware folder is then symlinked to /tmp/opt (and also /opt) and the script is executed. Since this is all open source, you can find the relevant code in the mount_partition function in release/src/router/rc/usb.c.
大意为:
当 U 盘插入路由器后,rc 系统守护进程将挂载 U 盘,并检查 U 盘 asusware 文件夹下是否存在名为 .asusrouter 的脚本文件,如果存在将会把 asusware 文件夹链接为 /tmp/opt(和 /opt),并且运行脚本。因为是开源固件,可以在源代码 release/src/router/rc/usb.c 的 mount_partition 函数中找到相关信息。
大家明白了吗?这就是为什么之前脚本要放在 asusware.arm/etc/init.d/ 里面,因为 opt/etc/init.d/ 是启动目录,开机后会运行 /init.d/ 目录下所有的脚本。但是会首先运行 asusware.arm/.asusrouter 这个脚本。  

.asusrouter 这个脚本后来了解到主要是用来启动各种库的命令 [10],而我不需要 Download Master 也用不到这些库,直接清空 .asusrouter 文件,将自己的脚本写进去即可。《Hacking Functionality into ASUSWRT Routers》文章中也写道:
Put the commands you wish to execute in asusware/.asusrouter on your USB storage device. Like any shell script, make sure it has #!/bin/sh as its first line and that the file uses UNIX line endings. The filesystem can be anything supported by the kernel – ext2, ext3 or fat. If you are using a filesystem that implements Linux permissions (such as ext2 or ext3), be sure to set the script as executable.
大意为:
将你的命令保存到 U盘 asusware 目录下的 .asusrouter 文件中,和任何 shell 脚本一样,确保脚本第一行内容为 #!/bin/sh,并且以 UNIX 作为换行符,内核支持 ext2、ext3 或 fat 格式的 U 盘,如果使用 Linux 的 ext2 或 ext3 文件系统,请确保脚本拥有执行权限。
他写的这篇文章文件夹目录是不完全正确的,因为 ARM CPU 的路由器文件夹目录是 asusware.arm,一共有四种对应不同架构 CPU 的目录,分别是:asusware、asusware.arm、asusware.big 和 asusware.mipsbig,要确定你的路由器是哪种请在 telnet 下输入命令 [11]
  1. nvram get apps_install_folder
复制代码
接下来需要注意的是 U 盘不一定是  ext2、ext3 或 fat 格式,经过我的测试 NTFS 和 FAT32 也可以。最重要的是 FAT、FAT32 和 NTFS 这三种格式不需要修改权限,因此我推荐使用这三种格式。
  
继续看《Hacking Functionality into ASUSWRT Routers》文章:
One caveat when running network programs (like DHCP forwarder or mDNS repeater) is that you need to wait until everything has been initialized. ASUS does that by polling the success_start_service NVRAM variable with this bash snippet:
  1. i=0
  2. while [ $i -le 20 ]; do
  3.       success_start_service=`nvram get success_start_service`
  4.       if [ "$success_start_service" == "1" ]; then
  5.               break
  6.       fi
  7.       i=$(($i+1))
  8.       echo "autorun APP: wait $i seconds...";
  9.       sleep 1
  10. done
复制代码
大意为
运行和网络有关的脚本,需要等待路由器所有程序初始化完成。因此华硕使用如下命令保证这一点。
这段命令大意是:不断查询程序是否初始化完成,如果没有完成就等待,如果完成了就运行接下来的命令。由于 hosts 是和网络有关的脚本,因此我必须等待所有程序初始化完成。

所以,最终的开机修改 hosts 脚本为:
  1. #!/bin/sh
  2. i=0
  3. while [ $i -le 20 ]; do
  4.       success_start_service=`nvram get success_start_service`
  5.       if [ "$success_start_service" == "1" ]; then
  6.               break
  7.       fi
  8.       i=$(($i+1))
  9.       echo "autorun APP: wait $i seconds...";
  10.       sleep 1
  11. done
  12. wget -q  "http://someonewhocares.org/hosts/zero/hosts" "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext" -O /etc/hosts
  13. sleep 30
  14. killall -SIGHUP dnsmasq
复制代码
将这段脚本保存为 .asusrouter 文件,然后放到 U 盘的 asusware 或者 asusware.arm 或者 asusware.big 或者 asusware.mipsbig 文件夹中,我的路由器则是放到 asusware.arm 目录中。
好了,这就可以开机运行了

对于你,你也可以将任何 shell 脚本写在 .asusrouter 里面(以 UNIX 作为换行符),并且保存在 U 盘上 asusware 或者 asusware.arm 或者 asusware.big 或者 asusware.mipsbig 文件夹中,具体是哪一个文件夹,上方有查询方法。
我建议 .asusrouter 里面应该至少包含以下内容:
  1. #!/bin/sh
  2. i=0
  3. while [ $i -le 20 ]; do
  4.       success_start_service=`nvram get success_start_service`
  5.       if [ "$success_start_service" == "1" ]; then
  6.               break
  7.       fi
  8.       i=$(($i+1))
  9.       echo "autorun APP: wait $i seconds...";
  10.       sleep 1
  11. done
  12. #从下方开始你的脚本
复制代码
如果你有多个脚本,我建议将多个脚本独立保存为随意文件名,然后放入 asusware 或者 asusware.arm 或者 asusware.big 或者 asusware.mipsbig 文件夹中,在 .asusrouter 里面直接写一段代码引导到你的脚本,例如我有名为 test1、test2 和 test3 脚本保存在 U 盘的 asusware.arm 里面,我想要他们几乎同时启动,我需要这样写:
  1. #!/bin/sh
  2. i=0
  3. while [ $i -le 20 ]; do
  4.       success_start_service=`nvram get success_start_service`
  5.       if [ "$success_start_service" == "1" ]; then
  6.               break
  7.       fi
  8.       i=$(($i+1))
  9.       echo "autorun APP: wait $i seconds...";
  10.       sleep 1
  11. done
  12. /opt/test1
  13. sleep 1
  14. /opt/test2
  15. sleep 1
  16. /opt/test3
复制代码
如果你不需要同时运行这些脚本,而是上一个脚本运行结束、再运行下一个,你只要将 test1 写在启动命令里面,然后编辑 test1 文件,在最后一行加入 /opt/test2 启动 test2,test2 脚本最后一行加入 /opt/test3 启动 test3,如同多米诺骨牌一样。


特别感谢:
来自 koolshare 的 konglang_616,来自 52asus 的 Master右手边

参考资料:
[1] ac68等arm迅雷、aria2安装小白教程及官固自启动插件教程
[2] RT-AC66UB1 开机自动执行脚本
[3] AdBlocking with combined hosts file(利用 hosts 文件过滤广告 英文)
[4] 請問RT-N16以及N66U的hosts修改
[5] 分享一个OpenWRT路由器的自动更新hosts方法,无需脚本
[6] 路由器自动修改hosts脚本
[7] wget 指令用法與教學
[8] 如何更改华硕路由器的 hosts
[9] Hacking Functionality into ASUSWRT Routers(将脚本运行在华硕路由器上 英文)
[10] 与 @Jack- 讨论开机脚本的问题
[11] 上海电信4K盒子+华硕路由器原厂固件/R7000实现拨号

其他资料:
[12] Asuswrt-Merlin 開機時未執行 init.d 腳本的問題
[13] User scripts · RMerl/asuswrt-merlin Wiki(用户脚本 梅林百科 英文)
[14] ASUSWRT原廠固件安裝 entware

评分

1

查看全部评分

15

主题

1308

帖子

3100

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
1
魔力币
1432
魔法值
15
注册时间
2017-4-24
 楼主| 发表于 2017-5-25 22:57:04 | 显示全部楼层
本帖最后由 Jack- 于 2017-7-24 18:10 编辑

警告信息

此教程可能会被一些坏人利用,使用华硕、Asuswrt-Merlin 路由器的人请小心
假设有一个不怎么喜欢我的朋友,他看到这篇教程,来到我家做客,趁我不注意将一个含有恶意脚本的 U 盘插入我的路由器,然后路由器会在 U 盘插入后开始运行这个脚本,而根本不会像 SSH 那样登录后才能运行。
请保护好你的路由器,对你的损失,我概不负责。

不过,我提供以下几点预防措施:
第一、买一只狗,在网上学习训狗教程,训练狗狗嗅探 U 盘。
第二、买一串冰糖葫芦,吃完后留下签子,用签子插入路由器 USB 接口中,用力去戳,直到路由器的 USB 接口报废。
第三、重新装修你的房子,挖一个壁橱,把路由器通电后放进去,用砖和水泥盖上。
第四、找来一把锤子,用力砸你的路由器,然后把你砸碎的路由器丢入可回收垃圾箱,再花 100 元买一个没有 USB 接口的路由器。

如果你还有其他好办法,请告诉我:)




2

主题

58

帖子

335

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
320
魔法值
0
注册时间
2016-2-20
发表于 2018-2-6 12:40:51 | 显示全部楼层
本帖最后由 xiaolu 于 2018-2-6 12:43 编辑
fstyle 发表于 2018-2-6 02:18
您好,非常感谢!用您的脚本成功运行了。还是想请教一下,这个方法是什么原理,.asusrouter文件和/lib目 ...

/usr/sbin/下的app_init_run.sh app_check_folder.sh脚本会判断pkg配置(就是asusware.arm/lib/ipkg/info下的配置文件)是否存在,然后运行asusware.arm/etc/init.d/下的相关启动脚本,.asusrouter已经不会执行了。

点评

谢谢:)  发表于 2018-2-7 04:03

评分

1

查看全部评分

1

主题

39

帖子

98

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
92
魔法值
0
注册时间
2017-3-24
发表于 2018-2-7 01:00:46 | 显示全部楼层
本帖最后由 fstyle 于 2018-2-7 01:24 编辑
xiaolu 发表于 2018-2-6 12:40
/usr/sbin/下的app_init_run.sh app_check_folder.sh脚本会判断pkg配置(就是asusware.arm/lib/ipkg/info下 ...

感谢您的指导,我cat了app_init_run.sh和app_check_folder.sh这两个文件,没有看懂代码的逻辑判断是什么意思,但是大概明白了为什么会执行/etc/init.d/下的文件,于是我根据您和楼主的思路对脚本进行了精简,只需要保留3个文件,在AC66U B1,固件版本3.0.0.4.384_20308上测试通过,成功实现了开机自动运行脚本。
这3个文件分别是
  1. \asusware.arm\.asusrouter
  2. \asusware.arm\etc\init.d\S50asusstartd
  3. \asusware.arm\lib\ipkg\info\asusstartd.control
复制代码
其中
1.    \asusware.arm\.asusrouter不会被执行,所以可以是空白文件(不能没有)

2.    \asusware.arm\etc\init.d\S50asusstartd是需要执行的脚本,我的是设置单线复用VLAN,代码为:
  1. #!/bin/sh
  2. robocfg vlans reset vlan 1 ports "0t 1 2 3 4 5t" vlan 2 ports "0t 5u"
  3. logger VLAN Configuration is COMPLETE!!!
复制代码
3.    \asusware.arm\lib\ipkg\info\asusstartd.control用途是让系统识别需要执行的脚本文件S50asusstartd,代码为:
  1. Enabled: yes
复制代码

虽然成功了,但感觉是瞎猫碰到死耗子,其中许多原理都不太清楚。其实这个方法与楼主是基本一致的,U盘中的\asusware.arm目录被链接到了/opt,并自动执行了其中的脚本文件,只是新版本固件下执行的是/opt/etc/init.d中的指定脚本而非.asusrouter。另外,在系统记录中发现,开机后这个脚本被执行了5次,sh /opt/S50asusstartd.1 start命令1次,sh /opt/S50asusstartd.1 firewall-start命令4次,实在不明白其中的奥妙。因为解决了一个问题有些兴奋,啰里啰唆写了一大堆,还是希望能和大家共同讨论进步吧。再次感谢楼主@Jack-和@xiaolu的帮助。

asusware.arm.rar.pdf

705 Bytes, 下载次数: 106

请去掉.pdf扩展名后打开

点评

谢谢,我已经通过 @xiaolu 回答知道原因  发表于 2018-2-7 04:03
能否方便透露下您的固件版本及设备型号,如果有条件,我想测试下为什么不会执行 .asusrouter 了,因为脚本在 .asusrouter 中是最靠谱的!  发表于 2018-2-7 03:53
多次执行容易引起内存泄漏,而且,一旦启动脚本挂载成功,只有恢复出厂设置才能彻底删除该启动项目(即使删除脚本,也会检查该目录下文件)  发表于 2018-2-7 03:49
其实从最开始 /etc/SXXname 就可以被执行,但是我也发现了,会被多次执行的问题,只要改用 .asusrouter 就没有这样事情,但这看来被新版固件去除了  发表于 2018-2-7 03:48
谢谢你的研究,已置顶到帖子第一页  发表于 2018-2-7 03:46

1

主题

39

帖子

98

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
92
魔法值
0
注册时间
2017-3-24
发表于 2018-2-8 03:44:57 | 显示全部楼层
本帖最后由 fstyle 于 2018-2-8 03:49 编辑
Jack- 发表于 2018-2-8 01:48
在这方面,不得不承认我已经算是外行了。所以,我只能提供一些思路,我没办法给出答案。因此这也是一篇外 ...

脚本被永久加入了开机启动项目这件事还是比较让人担忧的,但为了达到需求也只能妥协了,而且我觉得重启路由器这招应该能应对大部分可能出现的问题了。对于重复执行的问题,您的主意非常棒,我也找到了解决方法,就是从开机时间下手。

我查到一篇博客《awk获取Linux运行时间》,文中写到:
对于Linux的运行时间,可以通过命令uptime来获取,但实际上的时间是记录在/proc/uptime这个文件里的,单位是秒,通过uptime命令获取到的是已经转换了为具体的运行时间。通过uptime获取运行时间的同时,还会打印出本地当前时间,以及CPU的负载,有时候进行监控或者其他需求的时候不需要这些东西,那可以直接从/proc/uptime里提取。

原来uptime命令也是读取了一个数据,既然知道了数据的位置,一切都好办了,我把我的脚本中加入了开机时间的判断,超过45秒后不再执行VLAN配置命令,同时也对robocfg show返回的数据进行了二次判断:
  1. #!/bin/sh
  2. tinfo=`cat /proc/uptime`
  3. stime=${tinfo%%.*}
  4. if [ $stime -le 45 ]; then
  5.      REresult=`robocfg show`
  6.      vstat=${REresult##*mac_hash}
  7.      vlanstat=`printf %s $vstat`
  8.      if [ $vlanstat != "1:vlan1:0t12345t2:vlan2:0t5" ]; then
  9.           robocfg vlans reset vlan 1 ports "0t 1 2 3 4 5t" vlan 2 ports "0t 5u"
  10.      fi
  11. fi
复制代码

我对于Shell脚本编程完全是新手,不会使用awk、sed等高级命令,只用了内置操作符进行了一些字符串判断。为了帮助其他人,我解释一下命令,大神们别笑话我。

第2行
  1. tinfo=`cat /proc/uptime`
复制代码
这个命令获取了/proc/uptime文件的内容,赋值给tinfo变量,示例如下:
  1. 862.94 1572.25
复制代码
只有两个数字,第一个就是开机时间,单位为秒。

第3行
  1. stime=${tinfo%%.*}
复制代码
使用字符串操作截取了tinfo字符串第一个小数点前的部分,也就是开机秒数的整数值,便于后续if语句的逻辑判断。


评分

1

查看全部评分

59

主题

582

帖子

1682

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
1189
魔法值
0
注册时间
2016-4-14

DDOS纪念勋章AC68UAC5300R8500

发表于 2017-5-25 17:55:27 | 显示全部楼层
期待中。。。。。。。。。

13

主题

128

帖子

93

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
63
魔法值
0
注册时间
2017-5-6
发表于 2017-5-25 22:11:23 来自手机 | 显示全部楼层
4个小时了,前排支持

50

主题

7437

帖子

7万

积分

圣魔导师

纯种小白求领养

Rank: 10Rank: 10Rank: 10

精华
0
门户文章
12
魔力币
5556
魔法值
160
注册时间
2015-12-27

DDOS纪念勋章

发表于 2017-5-25 23:01:36 | 显示全部楼层
赞一个         

4

主题

43

帖子

495

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
477
魔法值
0
注册时间
2016-11-8
发表于 2017-5-25 23:45:59 | 显示全部楼层
这种帖子比较有意思~~~~~~~
群晖NAS讨论群组 t.me/synologyNAS

15

主题

1308

帖子

3100

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
1
魔力币
1432
魔法值
15
注册时间
2017-4-24
 楼主| 发表于 2017-5-26 00:35:20 | 显示全部楼层
本帖最后由 Jack- 于 2017-7-24 18:19 编辑

:)

4

主题

27

帖子

199

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
189
魔法值
0
注册时间
2017-2-7
发表于 2017-5-26 00:43:10 | 显示全部楼层
你带学莫斯?

4

主题

194

帖子

1054

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
976
魔法值
0
注册时间
2016-2-25

DDOS纪念勋章

QQ
发表于 2017-5-26 00:52:56 | 显示全部楼层
请教一下,编写修改WiFi功率的开机脚本应该怎么写??

15

主题

1308

帖子

3100

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
1
魔力币
1432
魔法值
15
注册时间
2017-4-24
 楼主| 发表于 2017-5-26 02:44:30 | 显示全部楼层
本帖最后由 Jack- 于 2017-5-29 22:29 编辑
trombonist 发表于 2017-5-26 00:52
请教一下,编写修改WiFi功率的开机脚本应该怎么写??
以下脚本已经证实存在问题,请勿使用!
用下方脚本可以将 WIFI 功率增至最大:
  1. #!/bin/sh
  2. i=0
  3. while [ $i -le 20 ]; do
  4.       success_start_service=`nvram get success_start_service`
  5.       if [ "$success_start_service" == "1" ]; then
  6.               break
  7.       fi
  8.       i=$(($i+1))
  9.       echo "autorun APP: wait $i seconds...";
  10.       sleep 1
  11. done
  12. wl txpwr 1496
复制代码
修改上方脚本最后一行 0 - 1496 来调整功率
Windows 用户请用第三方文本编辑器(如 Notepad++) 以 UNIX 作为换行符 保存为 “.asusrouter”
放在 U 盘上 asusware 或者 asusware.arm 或者 asusware.big 或者 asusware.mipsbig 文件夹中。

具体是放在哪个文件夹中,请在 telnet 中输入
  1. nvram get apps_install_folder
复制代码
用以下命令在 telnet 中可以查看当前 WIFI 功率
  1. wl txpwr_target_max
复制代码


特别声明:
该脚本未经测试,不保证有效。修改发射功率有可能造成硬件损坏,后果自负。可能不适用于官方固件。

参考资料:
AC5300 380.57_X6.5固件提高发射功率的两个办法


24

主题

4222

帖子

3235

积分

初级魔导师

空浪

Rank: 6Rank: 6

精华
0
门户文章
0
魔力币
2060
魔法值
0
注册时间
2015-10-9
发表于 2017-5-26 09:46:21 | 显示全部楼层
本帖最后由 konglang_616 于 2017-5-26 09:59 编辑

搞了半天我昨天辛辛苦苦看的脚本好像没什么鬼用


LZ应该只让我解释这一段的
  1. #!/bin/sh
  2. i=0
  3. while [ $i -le 20 ]; do
  4. success_start_service=`nvram get success_start_service`
  5. if [ "$success_start_service" == "1" ]; then
  6. break
  7. fi
  8. i=$(($i+1))
  9. echo "autorun APP: wait $i seconds...";
  10. sleep 1
  11. done
  12. #从下方开始你的脚本
复制代码


0

主题

11

帖子

29

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
28
魔法值
0
注册时间
2017-5-1
发表于 2017-5-26 10:14:55 | 显示全部楼层
楼主真的是达人一枚,太强大了

15

主题

1308

帖子

3100

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
1
魔力币
1432
魔法值
15
注册时间
2017-4-24
 楼主| 发表于 2017-5-26 14:46:18 | 显示全部楼层
konglang_616 发表于 2017-5-26 09:46
搞了半天我昨天辛辛苦苦看的脚本好像没什么鬼用

当时,我确实不知道,后来看到 《Hacking Functionality into ASUSWRT Routers》[9] 才知道 .asusrouter 命令只有这一段有用。

31

主题

327

帖子

377

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
268
魔法值
0
注册时间
2015-12-14
发表于 2017-5-26 14:57:26 来自手机 | 显示全部楼层
mask备用

24

主题

4222

帖子

3235

积分

初级魔导师

空浪

Rank: 6Rank: 6

精华
0
门户文章
0
魔力币
2060
魔法值
0
注册时间
2015-10-9
发表于 2017-5-26 15:09:12 | 显示全部楼层
Jack- 发表于 2017-5-26 14:46
当时,我确实不知道,后来看到 《Hacking Functionality into ASUSWRT Routers》[9] 才知道 .asusrouter  ...


我还是不喜欢在路由上接USB设备

15

主题

1308

帖子

3100

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
1
魔力币
1432
魔法值
15
注册时间
2017-4-24
 楼主| 发表于 2017-5-26 15:30:16 | 显示全部楼层
konglang_616 发表于 2017-5-26 15:09
我还是不喜欢在路由上接USB设备

那么买 USB 接口路由器干什么?

2

主题

98

帖子

1105

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
1064
魔法值
0
注册时间
2016-5-6

DDOS纪念勋章

发表于 2017-5-26 15:45:00 | 显示全部楼层
好复杂,有点没有看下去的欲望,感觉和自动控制LED开关没多大差别吧。。。

点评

那只是一个脚本,而这是运行任何脚本的方法,一个可以帮助你打开一扇新大门的钥匙。  发表于 2017-5-29 22:39

4

主题

194

帖子

1054

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
976
魔法值
0
注册时间
2016-2-25

DDOS纪念勋章

QQ
发表于 2017-5-26 17:09:59 | 显示全部楼层
Jack- 发表于 2017-5-26 02:44
用下方脚本可以将 WIFI 功率增至最大:修改上方脚本最后一行 0 - 1496 来调整功率
Windows 用户请用第三方 ...

哇哦!我试一下!非常感谢!!!!

8

主题

70

帖子

476

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
443
魔法值
0
注册时间
2017-1-12
发表于 2017-5-26 17:37:38 来自手机 | 显示全部楼层
建议楼主看看我的,这么简单的为啥弄得你这么复杂?

点评

有错误欢迎指出,也欢迎您将您认为对此片教程有帮助的内容回复给我。  发表于 2017-5-29 22:35

联系我们|手机版|KoolShare ( 沪ICP备13045430号962110 沪公网备31010402005377

GMT+8, 2019-9-24 04:15 , Processed in 0.110220 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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