Eu tenho um roteador netgear nighhawk r7000 com a versão DD-WRT "Kong Mod": 19/04/2016. Eu estava tentando bloquear anúncios diretamente no roteador com o pixelserv seguindoessetutorial (e sim, configurei o script para ser executável).
Infelizmente não funciona.
Está escrito no tutorial que salvar o comando para inicialização dessa forma /jffs/dns/disable_adds.sh
deve resultar na execução do script na inicialização.
Ao tentar iniciar o script diretamente como escrito acima através do shell de comando da interface web do roteador recebo a seguinte mensagem:
sh: eval: line 1: /jffs/dns/disable_adds.sh: not found
Tentar um echo $PWD
shell de comando mencionado retorna /www
que é uma pasta paralela na hierarquia a /jffs
.
Usar ls ../jffs/dns
no mesmo shell mostra que o script foi encontrado onde deveria estar. Tentar executar o script ../jffs/dns/disable_adds.sh
produz a mesma mensagem acima.
Parece importante notar que o campo de saída às vezes não mostra nada mesmo apenas com echo e que mais de um comando também parece não funcionar
Não tenho ideia de como proceder agora para descobrir por que o roteador não reconhece a existência do script e como fazê-lo funcionar.
Editar: acho que devo mencionar que já tentei seguir as etapas de solução de problemas no final do tutorial mencionado e que estou tentando fazer com que funcione em um PC com Windows 7.
Edit2: Formatei um pouco o texto conforme sugerido nos comentários e adicionei mais algumas informações. Espero que esteja mais legível agora.
Responder1
Eu acho que você não especificou oShebangapropriadamente.
Quando você executa um script, isso informará ao sistema como executá-lo, tente os seguintes exemplos:
Tentando usar /bin/bat
como intérprete ( /bin/bat
não existe):
$ 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
Tentando usar /bin/cat
como intérprete:
$ cat <<EOF >test.sh
> #!/bin/cat
> hello
> EOF
$ chmod +x test.sh
$ ./test.sh
#!/bin/cat
hello
É muito possível que em um sistema reduzido/embarcado, você receba o not found
erro que vê acima.
Verifique se você digitou corretamente a primeira linha importante ( #!...
) e se o arquivo listado existe e pode ser executado sem erros.
Normalmente, você desejará algo como #!/bin/sh
(conforme especificado em disable_adds.sh
).
Editar:Também é possível que você tenha problemas com finais de linha - certifique-se de que o WinSCP ou o que quer que você esteja usando para transferir os arquivos não funcione com eles.Perguntas frequentes sobre WinSCP.
Responder2
Eu tive o mesmo problema. Documentei minha solução aqui no meu blog,http://studioforge.xyz/how-to-configure-cisco-linksys-wrt54g-v-2-to-run-pixelserv-on-dd-wrt/, tudo se resumia a executar o dos2unix em um dos arquivos e reenviá-lo.