Problème script

Fermé
Ceane Messages postés 40 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 11 juin 2007 - 11 juin 2007 à 11:06
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 11 juin 2007 à 16:08
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
11 juin 2007 à 11:15
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 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
11 juin 2007 à 11:19
Alors j'ai supprimer les case en trop.....
Ca ne fonctionne toujours pas..
lol tu avais raison
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
11 juin 2007 à 11:25
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 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
11 juin 2007 à 11:29
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
11 juin 2007 à 11:33
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
11 juin 2007 à 11:39
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 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
11 juin 2007 à 11:47
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 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
11 juin 2007 à 12:11
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 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
11 juin 2007 à 12:23
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
11 juin 2007 à 14:18
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 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
11 juin 2007 à 14:31
: 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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836 > Ceane Messages postés 40 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 11 juin 2007
11 juin 2007 à 14:42
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 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
11 juin 2007 à 15:20
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
11 juin 2007 à 16:08
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