découpage de script [BASH] - Codes et scripts - Linux et OS Alternatifs
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
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 |
et la fin pour la fermeture des blocs:
} |
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.
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