[BASH]découpage de script

découpage de script [BASH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 03-03-2003 à 17:49:22    

Voilà j'ai des scripts de cette forme
 

#!/bin/bash
if [ "$1" != "" ] ; then
 CONF_FILE=$1  
else exit 1  
fi
IPTABLES=`sed -n -e '/^IPTABLES/p' ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`
LOGGER=`sed -n -e '/^LOGGER/p' ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`
NAME=$(echo ${0##*/}|tr a-z A-Z)
 
echo "$NAME" | {
  IFS='_' read NAME SVR
INET=`sed -n -e "/^""$NAME""_INET/p" ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`
 
if [ "$INET" != "" ] ; then
for conf in ${INET} ; do
 echo "$conf" | {
  IFS='|' read net options
 echo "$net" | {
  IFS=':' read if srchost
if [ "$if" == "lo" ] ; then
CHAIN_OUT="lo_inet_out"
CHAIN_IN="lo_inet_in"
ifo=""
ifi=""
${LOGGER} "Mise en place de l'accès $NAME pour le serveur"
else
${LOGGER} "Mise en place de l'accès $NAME pour $net"
CHAIN_IN="inet_in"
CHAIN_OUT="inet_out"
      if [ "$srchost" != "" ] ; then
ifo="-o $if -d $srchost"
ifi="-i $if -s $srchost"
else
ifo="-o $if"
ifi="-i $if"
fi
fi
 
if [ "$options" == "http" ] || [ "$options" == "all" ] || [ "$options" == "" ] ; then
       ${IPTABLES} -t filter -A ${CHAIN_OUT}  ${ifi} -p tcp --dport http -j TCPACCEPT    
       ${IPTABLES} -t filter -A ${CHAIN_IN}  ${ifo} -p tcp --sport http -m state --state RELATED,ESTABLISHED -j TCPACCEPT    
       ${IPTABLES} -t filter -A ${CHAIN_IN}  ${ifo} -p tcp --sport 1024:65535 -m state --state RELATED,ESTABLISHED -j TCPACCEPT          
fi
if [ "$options" == "https" ] || [ "$options" == "all" ] || [ "$options" == "" ] ; then      
       ${IPTABLES} -t filter -A ${CHAIN_OUT}  ${ifi} -p tcp --dport https -j TCPACCEPT    
       ${IPTABLES} -t filter -A ${CHAIN_IN}  ${ifo} -p tcp --sport https -m state --state RELATED,ESTABLISHED -j TCPACCEPT        
fi        
}
}
done
fi
}


 
et j'aimerais pouvoir le découper, car j'ai plusieurs scripts qui sont tous identiques à celui-ci, sauf les règles #{IPTABLES} ...
 
Est-ce possible avec un #!/usr/local/bin/runscript.bash en début et runscript.bash qui éxecute le script?


---------------
Gitan des temps modernes
Reply

Marsh Posté le 03-03-2003 à 17:49:22   

Reply

Marsh Posté le 03-03-2003 à 18:11:43    

j'ai pas bien compris ce que tu voulais faire, mais tu devrais définir des fonctions dans un fichier, tu les charges avec un

. /ton_chemin/tes_fonctions


 
au début des fichiers où tu les appelles
 
enfin, c'est comme ça que j'essaierais


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 03-03-2003 à 18:17:54    

bah en fait je vois pas comment je pourrais faire une fonction, car les règles (lignes qui changent dans chaque fichier) sont à l'intérieur d'un bloc {} et le format varie d'un fichier à l'autre.
 
Ce qui ne change pas c'est toute la première partie

#!/bin/bash  
if [ "$1" != "" ] ; then  
CONF_FILE=$1  
else exit 1  
fi  
IPTABLES=`sed -n -e '/^IPTABLES/p' ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`  
LOGGER=`sed -n -e '/^LOGGER/p' ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`  
NAME=$(echo ${0##*/}|tr a-z A-Z)  
 
echo "$NAME" | {  
 IFS='_' read NAME SVR  
INET=`sed -n -e "/^""$NAME""_INET/p" ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`  
 
if [ "$INET" != "" ] ; then  
for conf in ${INET} ; do  
echo "$conf" | {  
 IFS='|' read net options  
echo "$net" | {  
 IFS=':' read if srchost  
if [ "$if" == "lo" ] ; then  
CHAIN_OUT="lo_inet_out"  
CHAIN_IN="lo_inet_in"  
ifo=""  
ifi=""  
${LOGGER} "Mise en place de l'accès $NAME pour le serveur"  
else  
${LOGGER} "Mise en place de l'accès $NAME pour $net"  
CHAIN_IN="inet_in"  
CHAIN_OUT="inet_out"  
     if [ "$srchost" != "" ] ; then  
ifo="-o $if -d $srchost"  
ifi="-i $if -s $srchost"  
else  
ifo="-o $if"  
ifi="-i $if"  
fi  
fi


 
et la fin pour la fermeture des blocs:
 

}  
}  
done  
fi  
}


 
 


---------------
Gitan des temps modernes
Reply

Marsh Posté le 03-03-2003 à 20:21:31    

c'est bon j'ai trouvé, j'ai inséré un source nom_du_fichier qui contient les règles. :hello:


---------------
Gitan des temps modernes
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed