O script no roteador com DD-WRT não pode ser executado porque não foi encontrado

O script no roteador com DD-WRT não pode ser executado porque não foi encontrado

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.shdeve 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 $PWDshell de comando mencionado retorna /wwwque é uma pasta paralela na hierarquia a /jffs.

Usar ls ../jffs/dnsno mesmo shell mostra que o script foi encontrado onde deveria estar. Tentar executar o script ../jffs/dns/disable_adds.shproduz 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/batcomo intérprete ( /bin/batnã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/catcomo 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 founderro 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.

informação relacionada