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

0

Eu tenho um roteador netgate n717 com o DD-WRT "Kong Mod": 04-19-2016. Eu estava tentando bloquear anúncios diretamente no roteador com pixelserv seguindo este tutorial (e sim eu configurei o script para ser executável).

Infelizmente isso não funciona.

Está escrito no tutorial que salvar o comando para inicialização como este /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 no shell de comando mencionado retorna /www , que é uma pasta paralela na hierarquia para /jffs .

Usar ls ../jffs/dns no mesmo shell mostra que o script está localizado onde deveria estar. Tentar executar o script com ../jffs/dns/disable_adds.sh produz a mesma mensagem acima.

Parece valer a pena notar que o campo de saída algumas vezes não mostra nada mesmo com apenas eco e que mais de um comando também não parece 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 executá-lo.

Edit: Eu acho que devo mencionar que eu já tentei seguir os passos de solução de problemas no final do tutorial mencionado e que eu estou tentando fazê-lo funcionar a partir de um PC com o Windows 7.

Edit2: Formatei o texto um pouco como sugerido nos comentários e adicionei mais algumas informações. Espero que seja mais legível agora.

    
por Clofri 15.06.2016 / 17:59

2 respostas

1

Eu acho que você não especificou o shebang corretamente.

Quando você executa um script, isso informa ao sistema como executá-lo, tente os seguintes exemplos:

Tentando usar /bin/bat como o interpretador ( /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 integrado / de ataque, você receba o erro not found que você vê acima.

Verifique se você digitou corretamente essa primeira linha importante ( #!... ) e se o arquivo listado existe e pode ser executado sem erros.

Você normalmente deseja algo como #!/bin/sh (conforme especificado em disable_adds.sh ).

Editar: Também é possível que você tenha um problema com terminações de linha - certifique-se de que o WinSCP ou o que estiver usando para transferir os arquivos não seja compatível com eles. FAQ do WinSCP .

    
por 03.04.2017 / 14:25
0

Eu tive o mesmo problema. Eu documentei minha solução aqui no meu blog, link , foi executado o dos2unix em um dos arquivos e o reenvio.

    
por 06.06.2017 / 21:43