|
|
|
|
Bonjour,
voila ,je suis bloqué dans cette étape , dans mon projet fin d'étude, je doit faire un script shell qui lire le fichier de configuration d'Iptables qui lire les règles dans cette fichier ligne par ligne puis affiche les testes a faire depuis hping2.
les règles d'iptables son stocké dans /ect/sysconfig/iptables de cette magnanière:
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
il faut tester le protocol TCP dans le port d'entrée 80 à partir une adresse ip source 192.168.2.22
#!/bin/bash
monfich=/home/tmed/Bureau/iptables
var_monfich='$monfich'
i=1
cat < iptables | while true
do
read ligne
if [ "$ligne" = "" ]; then break; fi
if [ `echo ${ligne} | awk '{print $4}'` ];
then
while [ "$ligne" != "" ]
do
ch=`echo ${ligne} | awk '{print $2}' | cut -d: -f4`
tab[$i]=$ch
if [ "${tab[$i]}" = "INPUT" ]; then echo "`echo ${ligne} | awk '{print $2 " " $3 " "$4" "$5 " " $6 " "$7}'`"
else break
fi
i=$(expr $i + 1)
echo " `echo ${ligne} | awk '{print $2 " " $3 " "$4}'`" >> ${monfich}.out
done
fi
#echo "`echo ${ligne} | awk '{print $2 " " $3 " "$4" "$5 " " $6 " "$7}'`"
done
Configuration: Windows Vista Firefox 3.0.10
Salut,
if [ `echo ${ligne} | awk '{print $4}'` ];
thenif quoi ? Tu n'évalues rien ! Même s'il en résulte un motif de ta commande, rien ne se passera ;-(
Ou encore : ch=`echo ${ligne} | awk '{print $2}' | cut -d: -f4`Il n'y a aucun 2nd champ dans le listing d'iptables (de ton exemple) qui contient un double point (:), donc rien à couper avec "cut". J'ai l'impression que tu confonds les lignes et les champs. Et quand bien même il y aurait une ligne contenant un "deux points", il en faudrait plusieurs pour s'en servir comme délimiteur (-d:) et n'afficher que le 4ème (-f4) ;-\
$ man woman Il n'y a pas de page de manuel pour woman. |
Merci pour votre reponce, voila jai besoin en sortie un tableau qui contenue chaque chaine de caractère d'une ligne:
|
C'est pas la peine pour ces 3 lignes:
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] mais juste pour ces lignes: -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited et merci beaucoup |
Salut,
|
Oui c'est juste:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited donc? |
Bonjour
|
Salut,
lami20j@debian:~$ cat fic.txt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT lami20j@debian:~$ sed 's/ /\n/g' fic.txt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT106485010510997108 |
Salut,
$ cat fic.txt
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
lami20j@debian:~$ tab=($(cat fic.txt|sed 's/ /\n/g' fic.txt))
$ for i in $(seq ${#tab[*]});do echo tab[$(($i-1))]=${tab[$(($i-1))]};done
tab[0]=-A
tab[1]=INPUT
tab[2]=-m
tab[3]=state
tab[4]=--state
tab[5]=ESTABLISHED,RELATED
tab[6]=-j
tab[7]=ACCEPT
tab[8]=-A
tab[9]=INPUT
tab[10]=-p
tab[11]=icmp
tab[12]=-j
tab[13]=ACCEPT
tab[14]=-A
tab[15]=INPUT
tab[16]=-i
tab[17]=lo
tab[18]=-j
tab[19]=ACCEPT
106485010510997108 |
Re,
$ tab=($(sed 's/ /\n/g' fic.txt))
$ for i in $(seq ${#tab[*]});do echo tab[$(($i-1))]=${tab[$(($i-1))]};done
tab[0]=-A
tab[1]=INPUT
tab[2]=-m
tab[3]=state
tab[4]=--state
tab[5]=ESTABLISHED,RELATED
tab[6]=-j
tab[7]=ACCEPT
tab[8]=-A
tab[9]=INPUT
tab[10]=-p
tab[11]=icmp
tab[12]=-j
tab[13]=ACCEPT
tab[14]=-A
tab[15]=INPUT
tab[16]=-i
tab[17]=lo
tab[18]=-j
tab[19]=ACCEPT
106485010510997108 |