У меня есть маршрутизатор Netgear nighhawk R7000 с выпуском DD-WRT "Kong Mod": 04-19-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: я немного отформатировал текст, как это было предложено в комментариях, и добавил еще немного информации. Я надеюсь, что теперь это более читабельно.

2 ответа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 FAQ.

0

Я была такая же проблема. Я задокументировал свое решение здесь, в своем блоге, http://studioforge.xyz/how-to-configure-cisco-linksys-wrt54g-v-2-to-run-pixelserv-on-dd-wrt/, оно сводилось к запустить dos2unix на одном из файлов и повторно загрузить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .