script não funciona [RESOLVIDO]

1. script não funciona [RESOLVIDO]

Stenio Ramos
sthenno

(usa Ubuntu)

Enviado em 14/12/2012 - 16:09h

#criei este script:

if [$1 -eq "entrada"]
then
ch="INPUT"
elif [$1 -eq "saida"]
then
ch="OUTPUT"
fi

if [$2 -eq "lp"]
then
ip=127.0.0.1
else
ip=$2
fi


if [$3 -eq "aceitar"]
then
op="ACCEPT"
elif [$3 -eq "derrubar"]
then
op="DROP"
else
op=$3
fi

# [tabela] [chain][ip] [opções]
iptables -t filter -A $ch -d $ip -j $op

ping $ip


#EX. loopback : ./murofogo.sh entrada lp aceitar

mas quando executo aparece esse erro:
./murofogo.sh: line 1: [entrada: command not found
./murofogo.sh: line 4: [entrada: command not found
./murofogo.sh: line 9: [lp: command not found
./murofogo.sh: line 17: [aceitar: command not found
./murofogo.sh: line 20: [aceitar: command not found
Bad argument `lp'
Try `iptables -h' or 'iptables --help' for more information.
ping: unknown host lp

tirei as aspas, mas continuou dando o mesmo erro.
sou iniciante ainda, desculpem os eros óbvios.



  


2. MELHOR RESPOSTA

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 15/12/2012 - 16:26h

sthenno escreveu:

agora deu certo. vlw. :)
qual era o problema mesmo?
por que somente nos argumentos do comando iptables não se colocou aspas?

ah, quando eu mudo 'aceitar' para 'derrubar', se uso ping continua se conectando normalmente com localhost. Por quê?


1) Faltou os ponto-e-vírgula antes do then;
2) else não aceita opção vazia. Se você não for declarar nada no else, pode pular direto pro fi;
3) -eq compara números, para comparar strings você tem que usar o =
4) Seu computador sempre vai conseguir pingar pra localhost (isto é, para ele mesmo), não importa o que você faça ;-)

3. Re: script não funciona [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 14/12/2012 - 16:21h

Mantenha as aspas e coloque na primeira linha do script este código
 #!/bin/bash  

Do contrário ele não vai reconhecer de que se trata de um shell script.


4. Re: script não funciona [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 14/12/2012 - 16:22h

Outra coisa: o Ubuntu tem um script de gerenciamento de firewall chamado ufw. Roda man ufw para você ver como ele funciona.


5. Re: script não funciona [RESOLVIDO]

Stenio Ramos
sthenno

(usa Ubuntu)

Enviado em 14/12/2012 - 18:35h

muito obrigado.
na verdade eu estava usando o backtrack, mas vou ver lá no ubuntu.


6. Re: script não funciona [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 14/12/2012 - 18:36h

Beleza então. Mas o problema do seu script mesmo foi a falta daquela primeira linha.


7. Re: script não funciona [RESOLVIDO]

Stenio Ramos
sthenno

(usa Ubuntu)

Enviado em 14/12/2012 - 18:38h

coloquei #!/bin/bash mas continua dando o msm erro
coloquei extensão .sh


8. Re: script não funciona [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 14/12/2012 - 18:40h

Você colocou assim:
#!/bin/bash
if [$1 -eq "entrada"]
then
ch="INPUT"
elif [$1 -eq "saida"]
then
ch="OUTPUT"
fi

if [$2 -eq "lp"]
then
ip=127.0.0.1
else
ip=$2
fi


if [$3 -eq "aceitar"]
then
op="ACCEPT"
elif [$3 -eq "derrubar"]
then
op="DROP"
else
op=$3
fi

# [tabela] [chain][ip] [opções]
iptables -t filter -A $ch -d $ip -j $op

ping $ip



9. Re: script não funciona [RESOLVIDO]

Stenio Ramos
sthenno

(usa Ubuntu)

Enviado em 14/12/2012 - 18:47h

coloquei o #!/bin/bash na primeira linha como vc disse, e ficou assim como esse aí.
mas quando vou executar da akele mesmo erro
passo argumentos certos, acho eu, mas diz comando não encontrado.
assim
./defense.sh entrada lp aceitar



10. Re: script não funciona [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 14/12/2012 - 18:47h

Tá dando erro em quais linhas agora?


11. Re: script não funciona [RESOLVIDO]

Stenio Ramos
sthenno

(usa Ubuntu)

Enviado em 14/12/2012 - 18:51h

linhas 2, 5, 10, 18 e 21.
parece que não aceita nenhum dos argumentos.
command not found
./defense.sh: line 2: [entrada: command not found
./defense.sh: line 5: [entrada: command not found
./defense.sh: line 10: [lp: command not found
./defense.sh: line 18: [aceitar: command not found
./defense.sh: line 21: [aceitar: command not found
Bad argument `lp'
Try `iptables -h' or 'iptables --help' for more information.
ping: unknown host lp



12. Re: script não funciona [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 14/12/2012 - 18:56h

Matei a charada: copia como está abaixo
#!/bin/bash
if [ "$1" -eq "entrada" ]
then
ch="INPUT"
elif [ "$1" -eq "saida" ]
then
ch="OUTPUT"
fi

if [ "$2" -eq "lp" ]
then
ip=127.0.0.1
else
ip="$2"
fi


if [ "$3" -eq "aceitar" ]
then
op="ACCEPT"
elif [ "$3" -eq "derrubar" ]
then
op="DROP"
else
op="$3"
fi

# [tabela] [chain][ip] [opções]
iptables -t filter -A "$ch" -d "$ip" -j "$op"

ping "$ip"




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts