estou criando um script basicão, pro ufw bloquear vários ip’s que estão numa lista, neste formato (exemplo):
0.0.0.0/0
1.1.1.1/1
etc…
3.3.3.3/3
to usando essa regra:
while read line; do sudo ufw deny from $line; done < /etc/ufw-rules/arquivo
aí que tá o problema. se eu executo essa linha no terminal, vai tranquilo. mas se coloco num script bash. dá o erro: "linha XX: erro de sintaxe próximo ao token inesperado `do’ "
Faz um certo tempo que não programo ou estudo programação mas, como você estaria escrevendo o código no script bash?
Tem umas diferenças entre executar line by line e executar por script bash.
Então line by line no terminal funciona, pois o terminal executa direto. Aquele “line” é para o programa pegar linha por linha de acordo com o comando “read” e jogar numa variável que é o"$line". Então teria de ver como o script está escrito, pode ser problemas com variável, pode ser que o comando está lendo coisas que ele não sabe oque fazer e então trava, tem um tanto de problemas, que só lendo o script que o @acvsilva criou, para tentarmos resolver. As vezes como acontecia muito na sala de aula, um ; faltando ou em lugar errado.
vai entender esse capeta desse script? botei do jeito que vc mostrou e foi. botando tudo numa linha só, não vai. tb retirei o sudo. pode ser que esteja “sudando” as permissões sei lá de onde com quem e quando e agora tá funfando legal. também troquei o shebang (#! ) por >>> #!/usr/bin/env bash <<<.
é um script tosco, linha por linha, assim:
apaga todas as regras do ufw
reinicia
adiciona as novas regras
pronto!
e a parte “adiciona as novas regras” é a pestilenta da linha acima. mas valeu sua ajuda. consegui fazer um scriptinho desejado pro ufw.