script gnome2 samba serveur

script gnome2 samba serveur - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 18-01-2003 à 07:39:14    

Bon, voila , il y a quelques temps, j'ai écrit ce script qui permet de partager ou départager un répertoire sous samba. Ca ne modifie pas les options de smb.conf.
script toto   -> partage toto s'il n'est pas partagé
script toto   -> départage toto s'il n'est partagé
L'idée de départ est de mettre çà dans le menu contextuel "scripts" de gnome2
Voila , si ca peut servir à qq.
 
#!/bin/sh  
# copyleft myocastor  
# myocastor@netcourrier.com
# "Coded with feet"  
 
# parametres globaux  
smbconf="/etc/samba/smb.conf"  
script="/etc/init.d/samba restart"  
 
declare -i SHARESSTART  
declare -i SHARESSTOP  
declare -i NBSHARE  
declare -i i  
 
 
function verif  
{  
echo "Partages : "$SHARE  
echo " "  
echo "Nom de partage   ligne debut   ligne fin   repertoire"  
echo " "  
for i in $(seq 1 $NBSHARE) ; do  
echo ${NOMSHARES[i]}  ${SHARESSTART[i]}  ${SHARESSTOP[i]}   ${SHAREPATH[i]}  
done  
}  
 
function SuppressionPartage  
{  
if [ -f $smbconf.old ] ; then  
rm -fr $smbconf.old  
fi  
mv $smbconf $smbconf.old  
EXPR="cat $smbconf.old | sed '${SHARESSTART[$1]},${SHARESSTOP[$1]}d'"  
eval $EXPR > $smbconf  
eval $script  
}  
 
function AjouterPartage  
{  
local k  
declare -i j  
j=$((0))  
ok="0"  
NOMTESTE=$REP  
while [ "$ok" = "0" ] ; do  
       corr="0"  
for i in $(seq 1 $NBSHARE) ; do  
                         if [ "$NOMTESTE" = ${NOMSHARES[i]} ] ; then  
                                                         corr="1"  
                                                         fi  
    done  
       if [ "$corr" = "0" ] ; then  
                              ok="1"  
                              else  
         NOMTESTE=$REP$j  
                              j=$((j+1))  
   fi  
done  
 
echo "      ">>$smbconf  
echo "[$NOMTESTE]">>$smbconf  
echo " comment = " >> $smbconf  
echo " path = $PWD/$REP" >> $smbconf  
echo " valid users = @partage" >> $smbconf  
echo " public = no" >> $smbconf  
echo " writable = yes" >> $smbconf  
eval $script  
}  
 
 
# determiner les partages (les sections commencent par la  
# declaration [...]  
 
ENTETE="^[ ]*[[]\{1\}\(.\+\$*\)[]]\{1\}[ ]*$"  
EXPR="cat $smbconf | sed -n 's/$ENTETE/\1/gp'"  
SHARE=$(eval $EXPR)  
NBSHARE=$(eval $EXPR | wc -l)  
 
 
# determiner la ligne de demarrage du partage  
# stocker dans NOMSHARE  
# et SHARESSTART  
# le dernier partage est fictif (fin de fichier)  
 
for i in $(seq 1 $NBSHARE) ; do  
EXPR3="$EXPR  | sed -n '$i,${i}p'"  
NOMSHARES[i]=$(eval $EXPR3)  
EXPR2="cat $smbconf | sed -n '/^[ ]*[[]\{1\}${NOMSHARES[i]}[]]\{1\}[ ]*$/='"  
SHARESSTART[i]=$(eval $EXPR2)  
done  
i=$((i+1))  
SHARESSTART[i]=$(cat $smbconf|wc -l)+1  
 
 
# determiner la ligne de fin de partage  
# stocker dans SHARESSTOP  
# ensuite, un sed 'debut,find' supprimera sur stdout  
# le partage dans smb.conf  
 
for i in $(seq 1 $NBSHARE) ; do  
SHARESSTOP[i]=${SHARESSTART[i+1]}-1  
done  
 
 
# determiner le nom du repertoire du partage  
 
for i in $(seq 1 $NBSHARE) ; do  
EXPR4="^[ ]*[pP][aA][tT][hH][ ]*=[ ]*\(\/.\+\/*\)[ ]*$"  
EXPR3="cat $smbconf| sed -n '${SHARESSTART[i]},${SHARESSTOP[i]}p'| sed -n 's/$EXPR4/\1/gp'"  
SHAREPATH[i]=$(eval $EXPR3)  
done  
 
REP="$1"  
SUPP=$((0))  
 
for i in $(seq 1 $NBSHARE) ; do  
if [ "$PWD/$REP" = "${SHAREPATH[i]}" ] ; then  
 # departager le repertoire  
 SuppressionPartage $i  
 SUPP=$((1))  
 fi  
done  
 
if [ $SUPP -eq 0 ] ; then  
AjouterPartage  
fi  

Reply

Marsh Posté le 18-01-2003 à 07:39:14   

Reply

Sujets relatifs:

Leave a Replay

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