Скрипт на маршрутизаторе с DD-WRT не может быть выполнен, так как он не найден

Скрипт на маршрутизаторе с DD-WRT не может быть выполнен, так как он не найден

У меня есть маршрутизатор Netgear Nighhawk R7000 с DD-WRT "Kong Mod" версии: 19.04.2016. Я пытался заблокировать рекламу прямо на маршрутизаторе с помощью PixelServ, следуяэтотучебник (и да, я сделал скрипт исполняемым).

К сожалению, это не работает.

В руководстве написано, что сохранение команды для запуска таким образом /jffs/dns/disable_adds.shдолжно привести к запуску скрипта при запуске.

При попытке запустить скрипт напрямую, как написано выше, через командную оболочку веб-интерфейса маршрутизатора я получаю следующее сообщение:

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

Попытка выполнить команду echo $PWDв указанной командной оболочке возвращает /wwwпапку, параллельную в иерархии папке /jffs.

Использование ls ../jffs/dnsв той же оболочке показывает, что скрипт находится там, где ему положено быть. Попытка запустить скрипт с помощью ../jffs/dns/disable_adds.shвыдает то же сообщение, что и выше.

Стоит отметить, что поле вывода иногда ничего не показывает даже при использовании простого echo, и что более одной команды также, похоже, не работают.

Я понятия не имею, как теперь действовать, чтобы выяснить, почему маршрутизатор не распознает существование скрипта и как заставить его запуститься.

Редактировать: Думаю, мне следует упомянуть, что я уже пытался выполнить шаги по устранению неполадок, описанные в конце упомянутого руководства, и пытаюсь заставить его работать на ПК с Windows 7.

Edit2: Я немного отформатировал текст, как было предложено в комментариях, и добавил немного информации. Надеюсь, теперь он более читабельный.

решение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 на одном из файлов и перезагрузить его.

Связанный контент