无法执行带有 DD-WRT 的路由器上的脚本,因为未找到该脚本

无法执行带有 DD-WRT 的路由器上的脚本,因为未找到该脚本

我有一台 netgear nighhawk r7000 路由器,DD-WRT“Kong Mod”发布日期:2016 年 4 月 19 日。我尝试使用 pixelserv 直接在路由器上屏蔽广告,如下所示教程(是的,我已将脚本设置为可执行)。

不幸的是,它不起作用。

教程中写道,像这样保存启动命令/jffs/dns/disable_adds.sh应该会导致脚本在启动时运行。

当尝试通过路由器的 Web 界面的命令 shell 直接启动脚本(如上所述)时,我收到以下消息:

sh: eval: line 1: /jffs/dns/disable_adds.sh: not found

尝试echo $PWD在提到的命令 shell 中返回/www一个与 层次结构平行的文件夹/jffs

在同一个 shell 中使用ls ../jffs/dns确实表明该脚本位于其应在的位置。尝试使用 运行该脚本../jffs/dns/disable_adds.sh会产生与上述相同的消息。

值得注意的是,即使只有 echo,输出字段有时也不会显示任何内容,而且多个命令似乎也不起作用

我现在不知道该如何继续来找出为什么路由器不承认脚本的存在以及如何让它运行。

编辑:我想我应该提到,我已经尝试按照上述教程末尾的故障排除步骤进行操作,并且我正尝试让它在装有 Windows 7 的电脑上运行。

编辑2:我按照评论中的建议对文本进行了一些格式化,并添加了一些更多信息。我希望现在它更具可读性。

答案1

我猜你没有指定舍邦适当地。

当你运行脚本时,这将告诉系统如何执行它,请尝试以下示例:

尝试用作/bin/bat解释器(/bin/bat不存在):

$ cat <<EOF >test.sh
> #!/bin/bat
> hello
> EOF
$ chmod +x test.sh
$ ./test.sh
-bash: ./test.sh: /bin/bat: bad interpreter: No such file or directory

尝试用作/bin/cat解释器:

$ cat <<EOF >test.sh
> #!/bin/cat
> hello
> EOF
$ chmod +x test.sh
$ ./test.sh
#!/bin/cat
hello

在精简/嵌入式系统上,您很可能会遇到not found上述错误。

检查您是否正确输入了重要的第一行(#!...),以及其中列出的文件是否存在,并且可以无错误地执行。

您通常会想要类似的东西#!/bin/sh(如其所指定disable_adds.sh)。

编辑:您也可能遇到了行尾问题 - 请确保 WinSCP 或您用于传输文件的任何程序不会处理它们。WinSCP 常见问题解答

答案2

我也遇到了同样的问题。我在我的博客上记录了我的解决方案,http://studioforge.xyz/how-to-configure-cisco-linksys-wrt54g-v-2-to-run-pixelserv-on-dd-wrt/,最后只需在其中一个文件上运行 dos2unix 并重新上传即可。

相关内容