Problème script

Ceane Messages postés 40 Statut Membre -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Alors je suis en train de faire un script pour ma pti netfilter/proxy Squid
Et j'obtiens cette erreur lorsque je lance le script:

: command not found:
'ptables.sh: line 19: syntax error near unexpected token `in
'ptables.sh: line 19: `case $reponse in

Voici mon script:

#!/bin/sh/

case=10

exit=8
while ["$exit"=8];
do

echo "0) Activer le routage"
echo "1) Effacer les tables"
echo "2) Interdir le passage des règles"
echo "3) Autoriser le passage des règles"
echo "4) Autoriser les DNS"
echo "5) Interdir les DNS"
echo "6) Autoriser le trafic HTTP"
echo "7) Interdir le trafic HTTP"
echo "8) QUITTER"

read reponse

case $reponse in

0)
echo 1 > /proc/sys/net/ipv4/ip_forward
;;

case $reponse in

1)
iptables -F
iptables -t nat -F
;;

case $reponse in

2)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
;;

case $reponse in

3)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;

case $reponse in

4)
iptables -A FORWARD -p udp -d 212.180.1.79 -i eth0 -o eth1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j ACCEPT
iptables -A FORWARD -p udp -d 212.180.0.137 -i eth0 -o eth1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -d 212.180.1.79 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -s 212.180.1.79 -j ACCEPT
;;

case $reponse in

5)
iptables -A FORWARD -p udp -d 212.180.1.79 -i eth0 -o eth1 --dport 53 -j DROP
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j DROP
iptables -A FORWARD -p udp -d 212.180.0.137 -i eth0 -o eth1 --dport 53 -j DROP
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j DROP
iptables -A OUTPUT -p udp --dport 53 -d 212.180.1.79 -j DROP
iptables -A OUTPUT -p udp --sport 53 -s 212.180.1.79 -j DROP
iptables -A OUTPUT -p udp --dport 53 -d 212.180.0.137 -j DROP
iptables -A OUTPUT -p udp --sport 53 -s 212.180.0.137 -j DROP
;;

case $reponse in

6)
iptables -A FORWARD -p tcp -o eth1 -i eth0 --dport 80 ACCEPT
iptables -A FORWARD -p tcp -i eth1 -o eth0 --sport 80 -mstate --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
;;

case $reponse in

7)
iptables -A FORWARD -p tcp -o eth1 -i eth0 --dport 80 DROP
iptables -A FORWARD -p tcp -i eth1 -o eth0 --sport 80 -mstate --state ESTABLISHED -j DROP
iptables -A OUTPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --sport 80 -j DROP
;;

case $reponse in

8)
$choix="0"
;;

esac

done

Pourriez vous m'aider s'il vous plait

Merci
A voir également:

9 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Supprimes dans un 1er temps toutes les occurrences de "case $reponse in" (à part la 1ère) :
#!/bin/sh/

case=10

exit=8
while [ "$exit" = 8 ];
do

echo "0) Activer le routage"
echo "1) Effacer les tables"
echo "2) Interdir le passage des règles"
echo "3) Autoriser le passage des règles"
echo "4) Autoriser les DNS"
echo "5) Interdir les DNS"
echo "6) Autoriser le trafic HTTP"
echo "7) Interdir le trafic HTTP"
echo "8) QUITTER"

read reponse

case $reponse in 

0)
echo 1 > /proc/sys/net/ipv4/ip_forward
;;


1)
iptables -F
iptables -t nat -F
;;


2)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
;;


3)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;


4)
iptables -A FORWARD -p udp -d 212.180.1.79 -i eth0 -o eth1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j ACCEPT
iptables -A FORWARD -p udp -d 212.180.0.137 -i eth0 -o eth1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -d 212.180.1.79 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -s 212.180.1.79 -j ACCEPT
;;


5)
iptables -A FORWARD -p udp -d 212.180.1.79 -i eth0 -o eth1 --dport 53 -j DROP
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j DROP
iptables -A FORWARD -p udp -d 212.180.0.137 -i eth0 -o eth1 --dport 53 -j DROP
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j DROP
iptables -A OUTPUT -p udp --dport 53 -d 212.180.1.79 -j DROP
iptables -A OUTPUT -p udp --sport 53 -s 212.180.1.79 -j DROP
iptables -A OUTPUT -p udp --dport 53 -d 212.180.0.137 -j DROP
iptables -A OUTPUT -p udp --sport 53 -s 212.180.0.137 -j DROP
;;


6)
iptables -A FORWARD -p tcp -o eth1 -i eth0 --dport 80 ACCEPT
iptables -A FORWARD -p tcp -i eth1 -o eth0 --sport 80 -mstate --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
;;


7)
iptables -A FORWARD -p tcp -o eth1 -i eth0 --dport 80 DROP
iptables -A FORWARD -p tcp -i eth1 -o eth0 --sport 80 -mstate --state ESTABLISHED -j DROP
iptables -A OUTPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --sport 80 -j DROP
;;


8)
$choix="0"
;;

esac

done
Mais je doute que cela suffise à la bonne marche de ton script ;-\
0
Ceane Messages postés 40 Statut Membre 1
 
Alors j'ai supprimer les case en trop.....
Ca ne fonctionne toujours pas..
lol tu avais raison
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Ben déjà le début de ton script me laisse assez perplexe :-\

case=10
Tu définis quoi avec cette variable ?

exit=8
while [ "$exit" = 8 ];

Et là si par la suite du script tu ne fais pas varier cette valeur, la condition sera forcément vraie en permanence, et puis tu cherches à faire quoi exactement avec cette condition ???

;-)
0
Ceane Messages postés 40 Statut Membre 1
 
case=10 c'est le nombre max de case du script (enfin je crois on m'a pas bien expliquer)
et
while [ "$exit" = 8 ]; je crois que je me suis trompé ca doit etre while [ "$exit" != 8 ]; non ???

Je sais c'est assez obscure comme réponse mais moi et la programmation ca fait 15....Lol
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Bon je crois qu'une petite entrée en matière des scripts bash ne te fera pas de mal ;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut

Voici une version corrigée qui te permet de quitter le programme.
Par contre je ne vois pas d'erreur sur le reste. Etrange.

Bonne chance

#!/bin/sh

case=10

reponse=-1
while [ $reponse -ne 8 ];
do

echo "0) Activer le routage"
echo "1) Effacer les tables"
echo "2) Interdir le passage des règles"
echo "3) Autoriser le passage des règles"
echo "4) Autoriser les DNS"
echo "5) Interdir les DNS"
echo "6) Autoriser le trafic HTTP"
echo "7) Interdir le trafic HTTP"
echo "8) QUITTER"

read reponse

case $reponse in 

0)
echo 1 > /proc/sys/net/ipv4/ip_forward
;;


1)
iptables -F
iptables -t nat -F
;;


2)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
;;


3)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;


4)
iptables -A FORWARD -p udp -d 212.180.1.79 -i eth0 -o eth1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j ACCEPT
iptables -A FORWARD -p udp -d 212.180.0.137 -i eth0 -o eth1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -d 212.180.1.79 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -s 212.180.1.79 -j ACCEPT
;;


5)
iptables -A FORWARD -p udp -d 212.180.1.79 -i eth0 -o eth1 --dport 53 -j DROP
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j DROP
iptables -A FORWARD -p udp -d 212.180.0.137 -i eth0 -o eth1 --dport 53 -j DROP
iptables -A FORWARD -p udp -s 212.180.1.79 -i eth1 -o eth0 --sport 53 -j DROP
iptables -A OUTPUT -p udp --dport 53 -d 212.180.1.79 -j DROP
iptables -A OUTPUT -p udp --sport 53 -s 212.180.1.79 -j DROP
iptables -A OUTPUT -p udp --dport 53 -d 212.180.0.137 -j DROP
iptables -A OUTPUT -p udp --sport 53 -s 212.180.0.137 -j DROP
;;


6)
iptables -A FORWARD -p tcp -o eth1 -i eth0 --dport 80 ACCEPT
iptables -A FORWARD -p tcp -i eth1 -o eth0 --sport 80 -mstate --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
;;


7)
iptables -A FORWARD -p tcp -o eth1 -i eth0 --dport 80 DROP
iptables -A FORWARD -p tcp -i eth1 -o eth0 --sport 80 -mstate --state ESTABLISHED -j DROP
iptables -A OUTPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --sport 80 -j DROP
;;


8)
echo "bye"
;;


*) echo "reponse incorrecte"
;;

esac

done
0
Ceane Messages postés 40 Statut Membre 1
 
bon alors j'ai modifier le début

case=0
while ["$reponse" != 8];

mais.....il me fait toujours la meme erreur...

c'est le case $reponse qui pas passe....peut etre devrais-je mettre avant le while ceci

reponse=0 a la place de case=0

Tu en pense quoi ??
0
Ceane Messages postés 40 Statut Membre 1
 
et meme quand je fais ca

case=8
while ["$reponse" -le $case];

j'ai l'impression qu'il voit meme po le while car il ne m'affiche rien....
et j'obtiens tout l'erreur avec le case $reponse in....

Bizare

Pitié help me
0
Ceane Messages postés 40 Statut Membre 1
 
Bon j'ai fais des modifs maintenant j'obtiens d'autre erreur

: N'est pas un répertoire/sh/
: command not found:
iptables.sh: line 81: unexpected EOF while looking for matching `"'
iptables.sh: line 88: syntax error: unexpected end of file

alors la .....
je ne sais pas

j'ai inversé le done et le esac...rien a faire....et pour ma ligne 81 c mon case 8)...je vois pas non plus
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
fais un copier coller de ce que je t'ai donné. J'ai pas dit -le mais -ne. Il y a pas non plus d'apostrophes autour de $reponse.
Donc fais un copier coller et dis moi les erreurs qui en résultent.

Bonne chance
0
Ceane Messages postés 40 Statut Membre 1
 
: command not found:
iptables.sh: line 8: syntax error near unexpected token `)'
'ptables.sh: line 8: `echo 0) " Activer le routage "

Ca change c deja ca ^^
Merci de m'aider au faut !!! :)
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > Ceane Messages postés 40 Statut Membre
 
Je re-répète. lol. Tu effaces tout ton fichier. Et tu colles exactement ce que j'ai mis.
Car là visiblement, tu as écrit : echo 0) "..." au lieu de echo "0)...".
Normalement ça devrait marcher, mais supprimer tout, et recopie-colle. lol

Tiens moi au courant
0
Ceane Messages postés 40 Statut Membre 1 > fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention  
 
J'ai copier ton fichier en entier et ca me fait

: command not found:
: command not found:
iptables.sh: line 21: syntax error near unexpected token `newline'
'ptables.sh: line 21: `case $reponse in


c zarb quand meme
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention  
 
Oui en effet
Bon on va tenter autre chose dans le même genre lol.
Supprime ton fichier. Et tu en recrées un autre et tu colles le code.
Et tu relances le programme.
Sur mon ordi, ça marche c'est pour ça que je m'obstine comme ça lol.

Bonne chance quand même.
0