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