Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1985 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [BASH]découpage de script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BASH]découpage de script

n°232186
bobor
tueur de n44b
Posté le 03-03-2003 à 17:49:22  profilanswer
 

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
mood
Publicité
Posté le 03-03-2003 à 17:49:22  profilanswer
 

n°232199
Mjules
Modérateur
Parle dans le vide
Posté le 03-03-2003 à 18:11:43  profilanswer
 

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.
n°232203
bobor
tueur de n44b
Posté le 03-03-2003 à 18:17:54  profilanswer
 

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
n°232282
bobor
tueur de n44b
Posté le 03-03-2003 à 20:21:31  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [BASH]découpage de script

 

Sujets relatifs
[SCRIPT] Creation d'un fichier logPb avec cronttab: script sh exécuté, pas php?
[Bash] Comment redimensionner plusieurs images ?aide commande bash (encore re:calcul d'expression mathématique)
probleme curieux avec un script [RESOLU][Script] petit Probleme
[Debian]Comment ce fait l'initialisation du bash ??afficher une progression 1% 2% ... en bash
[Bash] Il me faudrait un petit script ... [Resolu] 
Plus de sujets relatifs à : [BASH]découpage de script


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR