Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/05/2007, à 12:35

Wizou

Projet Scripting en Shell

Bonjour à tous,
Voici un exercice que je devais faire, mon premier exercice de script sur Linux, pour un début, je trouve que c'est pas trop mal.
Il y a évidemment des trucs à améliorer, des mauvaises mises en formes... mais ça fonctionne. tongue

1 : GESTION DU SYSTEME
1-1- LISTER LE REPERTOIRE COURANT
1-2- CHANGER DE REPERTOIRE COURANT
1-3- AJOUTER UN REPERTOIRE
1-4- SUPPRIMER UN REPERTOIRE
1-5- COPIER UN REPERTOIRE ET SON CONTENU
1-6- RENOMMER UN REPERTOIRE
1-7- CREER UN LIEN SYMBOLIQUE POUR UN REPERTOIRE
1-8- COPIER UN FICHIER
1-9- RENOMMER UN FICHIER
1-10- CREER UN LIEN SUPPLEMENTAIRE SUR UN FICHIER
1-11- EFFACER UN FICHIER
1-12- EFFACER TOUS LES FICHIERS DU REPERTOIRE
1-13- MODIFIER LES DROITS SUR UN FICHIER OU SUR UN REPERTOIRE
1-14- MODIFIER LE PROPRIETAIRE D'UN FICHIER OU D'UN REPERTOIRE
1-15- MODIFIER LE GROUPE D'UN FICHIER OU D'UN REPERTOIRE

2 : GESTION DES PROCESSUS
2-1- LISTER TOUS LES PROCESSUS ACTIFS
2-2- LISTER LES PROCESSUS POUR UN UTILISATEUR
2-3- ARRETER UN PROCESSUS
2-4- ARRETER LE SYSTEME

3 : GESTION DES UTILISATEURS
3-1- CREER UN COMPTE UTILISATEUR
3-2- SUPPRIMER UN COMPTE UTILISATEUR
3-3- CREER UN COMPTE POUR UNE PROMOTION D’ELEVES
3-4- SUPPRIMER LES COMPTES POUR UNE PROMOTION D’ELEVES
3-5- ENVOYER UN MESSAGE IMMEDIAT SUR L’ECRAN D’UN UTILISATEUR
3-6- ENVOYER UN MESSAGE IMMEDIAT A TOUT LE MONDE

Pour répondre à cet exercice, j'ai créé 5 fichiers :
- lancement.sh
- Menu.sh
- gestion_systeme.sh
- gestion_processus.hs
- gestion_utilisateurs.sh

Voir le contenu des fichiers plus bas^^

lancement.sh :

#!/bin/bash
# Fichier "lancement.sh"

# initialisation première utilisation
cd /script/interface_gestion/temp
echo "0" > init.txt
echo "0" > cibleetablie.txt
echo "0" > fichiercible.txt
echo "0" > fichierpwdcible.txt

#appel du menu
cd /script/interface_gestion
./Menu.sh

Menu.sh :

#!/bin/bash
# Fichier "Menu.sh"



cd /home/Projet/temp

# affecte a $REPLY la valeur de init.txt
read < init.txt



#si démarrage
if [ $REPLY -eq 0 ];

#on enregistre /home comme répertoire de départ sinon on garde le chemin pré enregistré
then echo "/home" > temppwd.txt
echo "1" > init.txt

fi

clear

echo "###############################################################"
echo "# MENU #"
echo "###############################################################"
echo ""
echo "1) Gestion du systeme de fichier "
echo "2) Gestion des processus "
echo "3) Gestion des utlisateurs "
echo "4) Quitter "
echo
echo -n "Votre Choix : "

read choix

# on se met dans le rep où sont localisés les scripts à executer
cd /script/interface_gestion/
# on execute les scipts suivant le choix utilisateur
case $choix in
"1") ./gestion_systeme.sh ;;
"2") ./gestion_processus.sh ;;
"3") ./gestion_utilisateurs.sh ;;
"4") clear && echo "Au revoir" && exit ;;
*) echo "Veuillez saisir un chiffre entre 1 et 4" && read var && ./Menu.sh ;;
esac

Cordialement,

Zjulkerw

Dernière modification par Wizou (Le 18/05/2007, à 13:07)

Hors ligne

#2 Le 18/05/2007, à 12:43

Le_Delicat

Re : Projet Scripting en Shell

Utilise les balises [c0de] [/c0de] pour encadrer tes différents fichiers, ça sera beaucoup plus lisible (en changeant c0de en code)

Merci.

Dernière modification par Le_Delicat (Le 18/05/2007, à 12:44)


Lier le subtil à l'agréable

Hors ligne

#3 Le 18/05/2007, à 12:56

Wizou

Re : Projet Scripting en Shell

Ok, c'est fait !!

Je rajoute mon fichier gestion_systeme.sh

gestion_systeme :

#!/bin/bash
# Fichier "Gestion du systeme de fichier.sh"

clear

##################################
# 1) Lister le répertoire courant#
##################################

fctlisterrepertoircourant() {
clear

#on se met dans le répertoire de travail courant
fctretourpwd

#j'utilise la fonction fctshowlsREP()
fctshowlsREP

#retour menu
echo "Taper sur Entrée pour revenir au menu"
read attend_suite
fctg_systeme

}

###########################
#affichage des répertoires#
###########################

fctshowlsREP() {

echo "Vous etes actuellement dans le repertoire $PWD "
echo "Il contient les repertoires :"
fctstockpwd

#redirige ls -all|grep ^d dans templs.txt
ls -all|grep ^d > /script/interface_gestion/temp/templs.txt


cd script/interface_gestion/temp
#affiche le numéro de ligne et le champ numéro 8 de templs.txt
awk '{print NR,$8}' templs.txt

fctretourpwd

}

########################
#affichage des fichiers#
########################

fctshowls() {

echo "Vous etes actuellement dans le repertoire $PWD "
echo "Il contient les fichiers :"
fctstockpwd

#redirige ls dans templsf.txt
ls -d * > /script/interface_gestion/temp/templsf.txt


cd script/interface_gestion/temp
#affiche le numéro de ligne et le champ numéro 8 de templsf.txt
awk '{print NR,$1}' templsf.txt

fctretourpwd

}


#########################################
#stock la valeur de pwd dans temppwd.txt#
#########################################

fctstockpwd(){


varpwd=`pwd`
cd script/interface_gestion/temp
echo $varpwd > temppwd.txt
cd $varpwd
}

############################################
#récupère la valeur de pwd dans temppwd.txt#
############################################

fctretourpwd(){

cd /script/interface_gestion/temp
read < temppwd.txt
cd $REPLY
}

##############################################
#stock pwd et relance le menu gestion système#
##############################################

fctg_systeme(){

fctstockpwd
cd script/interface_gestion/
./gestion_systeme.sh
}

##################################
#2) Changer de répertoire courant#
##################################

fctchangerrepertoire(){
clear


#on se met dans le répertoire de travail courant
fctretourpwd

#j'utilise la fonction fctshowlsREP()
fctshowlsREP

fctcirculer

echo "Taper sur une touche pour revenir au menu"
read var
fctg_systeme

}

###########################
#Circuler dans répertoires#
###########################


fctcirculer(){

echo "Taper le numéro du répertoir dans lequel vous voulez vous déplacer"

#affecte a la variable var2 la valeur lue au clavier
read var2



#si la variable est 1 on reste dans le répertoire courant
if [ $var2 -eq 1 ];
then echo"Vous avez choisi de rester dans le répertoire courant"


#si la variable est 2 on remonte dans la hierarchie
elif [ $var2 -eq 2 ];
then cd ../
echo "Vous etes actuellement dans le repertoire $PWD "


#si la variable correspond a un des repertoire existant de notre dossier
else
cd /script/interface_gestion/temp
repfils=`awk -v "awkvar=$var2" 'NR==awkvar {print $8}' templs.txt`

fctretourpwd

cd $repfils
echo ""
echo "Vous etes maintenant dans le repertoire $PWD "
echo ""
fi

} 

#########################
#3) Ajouter un repertoire #
#########################

fctajouterrepertoire() {
clear
fctretourpwd
echo "Taper le nom du repertoire que vous voulez creer:"
read nomfichier
mkdir -v $nomfichier
echo "Appuyer sur Entree pour revenir au menu "
read var
fctg_systeme
}

###########################
#4) Supprimer un repertoire #
###########################

fctsupprimerrepertoire() {
clear
#on se met dans le répertoire de travail courant
fctretourpwd

#j'utilise la fonction fctshowlsREP()
fctshowlsREP
echo -n "Votre choix : "
read choix
cd /script/interface_gestion/temp
nomfichier=`awk -v "awkvar=$choix" 'NR==awkvar { print $8 }' templs.txt`
echo "Appuyer sur une Entree pour valider la suppression de ce fichier"
read var
fctretourpwd
rm -Rf $nomfichier
echo "Le dossier a été supprime avec succes (Entrer pour revenir au menu)"
read var
fctg_systeme
}

#########################################
#5) Copier un repertoire et son contenu #
#########################################

fctcopierrepetsoncontenu() {

clear

#initialisation, récupération des variables



varpwddepart=`pwd`
cd /script/interface_gestion/temp
read < fichiercible.txt
cible=$REPLY
read < fichierpwdcible.txt
pwdcible=$REPLY
read < cibleetablie.txt
vartest=$REPLY

#on se met dans le répertoire de travail courant
fctretourpwd
#j'utilise la fonction fctshowlsREP()
fctshowlsREP

#test déja lancé et a établi une cible
#si non
if [ $vartest -eq 0 ];



then
echo "Selectionner le repertoire que vous voulez copier , 'C' pour changer de répertoir ou 'Q' pour quitter: "
read var;
if [ $var = "C" ] || [ $var = "c" ];
then fctcirculer
fctstockpwd
fctcopierrepetsoncontenu


elif [ $var != "Q" ];
then varpwdcible=`pwd`
cd /script/interface_gestion/temp
cible=`awk -v "awkvar=$var" 'NR==awkvar {print $8}' templs.txt`
echo "1" > cibleetablie.txt
echo $cible > fichiercible.txt
echo $varpwdcible > fichierpwdcible.txt
fctcopierrepetsoncontenu
fi
#si oui
else

echo "Selectionner le repertoire dans lequel vous vouler effectuer la copie de $cible, 'C' pour changer de répertoir ou 'Q' pour quitter: "

read var2
if [ $var2 = "C" ] || [ $var2 = "c" ];
then fctcirculer
fctstockpwd
fctcopierrepetsoncontenu


elif [ $var2 != "Q" ];
then
varpwdcible2=`pwd`
cd /script/interface_gestion/temp
cible2=`awk -v "awkvar=$var" 'NR==awkvar {print $8}' templs.txt`


cd $varpwddepart
cp -R $pwdcible/$cible $varpwdcible2/$cible2

echo "Copie terminee"
cd $varpwdcible2
fctshowlsREP
#init à 0 test déjà lancé
echo "0" > cibleetablie.txt
fi


fi

echo "Taper sur une touche pour revenir au menu"
read var
fctg_systeme
} 

###########################
#6) Renommer un répertoire#
###########################

fctrenommerrepertoire() {
clear

#on se met dans le répertoire de travail courant
fctretourpwd

#j'utilise la fonction fctshowlsREP()
fctshowlsREP

echo "Taper le numéro du répertoire à renommer ou 'Q' pour quitter: "
read choix
cd /script/interface_gestion/temp
if [ $var != "Q" ];
then

nom1=`awk -v "awkvar=$choix" 'NR==awkvar {print $8}' templs.txt`

echo "Taper le nom qui remplacera $nom1 puis taper sur Entrée"

#entrée du nom de remplacement

read nom2

fctretourpwd

echo "Voulez vous vraiment renommer $nom1 par $nom2 ? si oui, taper 'o'"
read verif

if [ $verif == "O" ] || [ $verif = "o" ];
then mv $nom1 $nom2
echo "Renommage effectué"

else echo "Renommage abandonné"

fi
fi
echo "Taper sur une touche pour revenir au menu"
read var
fctg_systeme
}

################################################
#7) Créer un lien symbolique pour un repertoire#
################################################

fctlienrepertoire() {
clear
#initialisation, récupération des variables

echo "1"



cd /script/interface_gestion/temp
read < fichiercible.txt
varpwddepartenreg=$REPLY
read < cibleetablie.txt
vartest=$REPLY

#on se met dans le répertoire de travail courant
fctretourpwd
varpwddepart=`pwd`
#j'utilise la fonction fctshowlsREP()
fctshowlsREP

#test déja lancé et a établi une cible
#si non
if [ $vartest -eq 0 ];

then
echo "test non"
cd /script/interface_gestion/temp
echo $varpwddepart > fichiercible.txt
echo "1" > cibleetablie.txt
fctlienrepertoire
#si oui
else
echo "test oui"
echo "Le lien sera créé dans le répertoire $varpwddepartenreg ."
echo "Taper le numéro du répertoire qui sera la cible lien, 'C' pour changer de répertoir ou 'Q' pour quitter: "

read var

if [ $var = "C" ] || [ $var = "c" ];
then fctcirculer
fctstockpwd
fctlienrepertoire


elif [ $var != "Q" ];
then
varcible=`pwd`

cd /script/interface_gestion/temp
cible=`awk -v "awkvar=$var" 'NR==awkvar {print $8}' templs.txt`

echo "Taper le nom du lien pour la cible $cible puis taper sur Entrée"

read nom2

echo "Voulez vous vraiment créer pour la cible $cible le lien $nom2 ? si oui, taper 'o'"
read verif

if [ $verif == "O" ] || [ $verif == "o" ];

then
cd $varpwddepartenreg
ln -s $varcible/$cible $nom2
echo "Lien effectué"

else echo "Lien abandonné"

fi
fi
echo "0" > cibleetablie.txt
fi
echo "Taper sur une touche pour revenir au menu"
read var
fctg_systeme

}

#######################
#8) Copier un fichier #
#######################

fctcpfichier() {
clear



cd /script/interface_gestion/temp

read < fichiercible.txt
fichier=$REPLY
read < fichierpwdcible.txt
pwdcible=$REPLY
read < cibleetablie.txt
vartest=$REPLY

#on se met dans le répertoire de travail courant
fctretourpwd

varpwddepart=`pwd`

if [ $vartest -eq 0 ];
then
#j'utilise la fonction fctshowls()
fctshowls

echo "Selectionner le fichier du repertoire courant que vous voulez copier "
read var
varpwdcible=`pwd`
cd /script/interface_gestion/temp
fichier=`awk -v "awkvar=$var" 'NR==awkvar { print $1 }' templsf.txt`
echo "1" > cibleetablie.txt
echo $fichier > fichiercible.txt
echo $varpwdcible > fichierpwdcible.txt
fctretourpwd
fctcpfichier

else
#j'utilise la fonction fctshowlsREP()
fctshowlsREP
echo "Selectionner le repertoire dans lequel vous vouler effectuer la copie de $fichier, 'C' pour changer de répertoir ou 'Q' pour quitter: "

read var

if [ $var = "C" ] || [ $var = "c" ];
then fctcirculer
fctstockpwd
fctcpfichier


elif [ $var != "Q" ];
then
varpwdcible=`pwd`
cd /script/interface_gestion/temp
cible=`awk -v "awkvar=$var" 'NR==awkvar {print $8}' templs.txt`




cd $varpwddepart

cp $pwdcible/$fichier $varpwdcible/$cible
echo
echo "Le fichier a été copié dans le repertoire choisi "
cd /script/interface_gestion/temp
echo "1" > cibleetablie.txt
cd $varpwddepart
fi
fi
echo
echo "Appuyer sur Entree pour revenir au menu "
read var
fctg_systeme
}

#########################
#9) Renommer un fichier #
#########################

fctrenommerfichier() {
clear
#on se met dans le répertoire de travail courant
fctretourpwd
#j'utilise la fonction fctshowlsREP()
fctshowls
echo "Selectionner le fichier que vous voulez renommer "
read var
cd /script/interface_gestion/temp
cible=`awk -v "awkvar=$var" 'NR==awkvar {print $0}' templsf.txt`
fctretourpwd
echo "Veuillez saisir le nouveau nom du fichier "
echo
echo -n "Nouveau Nom : "
read nvnom
echo
mv $cible $nvnom
echo "Le changement de nom a ete effectue "
echo "Appuyer sur Entree pour revenir au menu "
read var
fctg_systeme

}

#################################################
#10) Creer un lien supplementaire sur un fichier #
#################################################

fctlienfichier() {
clear
#on se met dans le répertoire de travail courant
fctretourpwd

#j'utilise la fonction fctshowls()
fctshowls
echo "Selectionner le fichier du repertoire courant sur lequel vous voulez faire une lien "
echo -n "Choix : "
read var
cd /script/interface_gestion/temp
fichier=`awk -v "awkvar=$var" 'NR==awkvar { print $0 }' templfs.txt`

echo
echo "Veuillez saisir le nom du lien supplémentaire"
echo -n "Nom du lien : "
read var
ln -s $fichier $var
echo "Lien cree"
echo
echo "Appuyer sur Entree pour revenir au menu "
read var
fctg_systeme
}

#########################
#11) Effacer un fichier #
#########################

fctsupprimerfichier() {
clear
#on se met dans le répertoire de travail courant
fctretourpwd

#j'utilise la fonction fctshowlsf()
fctshowls
echo "Selectionner le fichier sur lequel vous voulez faire une lien "


echo -n "Choix : "
read var
cd /script/interface_gestion/temp
fichier=`awk -v "awkvar=$var" 'NR==awkvar { print $1 }' templsf.txt`

echo "Appuyer sur une Entree pour valider la suppression de ce fichier"
read var
fctretourpwd
rm -R $fichier
echo "Le dossier a été supprime avec succes (Entrer pour revenir au menu)"
read var
fctg_systeme
}

##############################################
#12) Effacer tous les fichiers du repertoire #
##############################################

fcteffacertslsfichierrepertoire() {
clear

#on se met dans le répertoire de travail courant
fctretourpwd

#j'utilise la fonction fctshowlsREP()
fctshowlsREP
echo "Selectionner le repertoire du chemin courant dans lequel vous voulez supprimer son contenu "
echo -n "Choix : "

read var
cd /script/interface_gestion/temp
fichier=`awk -v "awkvar=$var" 'NR==awkvar { print $8 }' templs.txt`
echo
echo "Appuyer sur Entree pour proceder a la suppression de tous les fichiers se trouvant dans le dossier selectionne "
read x
ctretourpwd
cd $fichier
rm *.*
echo "Suppression terminee "
echo
echo "Appuyer sur Entree pour revenir au menu "
read var
cd ..
fctg_systeme
}


#######################################################
# 13) Modifier les droits sur un fichier ou un repertoire #
#######################################################

fctmodifierdroits() {
clear
echo "Sur quoi voulez vous modifier les droits ? "
echo
echo "1) Un dossier "
echo "2) Un fichier "
echo
echo -n "Votre Choix : "
read var

case $var in
"1") {

clear
ls -d */ > /script/interface_gestion/temptemp4.txt
echo "Voici la liste des dossiers : "
echo
cd /script/interface_gestion/temp
awk '{ print NR, $0 }' temp4.txt
echo
echo -n "Votre choix : "
read var
awk -v "awkvar=$var" 'NR==awkvar { print $1 }' temp4.txt > temp5
echo
echo "Quels droits voulez vous attribuer a ce dossier ? "

echo
echo "Droit pour Proprietaire : "
echo "Lecture : "
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read PdroitL
cd /script/interface_gestion
case $PdroitL in
"1") echo "Droit de Lecture OK " && PtdroitL=4 ;;
"2") echo "Pas de Droit de Lecture " && PtdroitL=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

read var
echo
echo "Ecriture"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read PdroitE
cd /script/interface_gestion
case $PdroitE in
"1") echo "Droit d'Ecriture OK " && PtdroitE=4 ;;
"2") echo "Pas de Droit d'Ecriture " && PtdroitE=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

read var
echo
echo "Execution"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read PdroitEx
cd /script/interface_gestion
case $PdroitEx in
"1") echo "Droit d'Execution OK " && PdroitEx=4 ;;
"2") echo "Pas de Droit d'Execution " && PdroitEx=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac
read var


echo
echo "Droit pour Groupe : "
echo "Lecture : "
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read GdroitL
cd /script/interface_gestion
case $GdroitL in
"1") echo "Droit de Lecture OK " && GdroitL=2 ;;
"2") echo "Pas de Droit de Lecture " && GdroitL=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac


read var
echo
echo "Ecriture"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read GdroitE
cd /script/interface_gestion
case $GdroitE in
"1") echo "Droit d'Ecriture OK " && GdroitE=2 ;;
"2") echo "Pas de Droit d'Ecriture " && GdroitE=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

read var
echo
echo "Execution"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read GdroitEx
cd /script/interface_gestion
case $GdroitEx in
"1") echo "Droit d'Execution OK " && GdroitEx=2 ;;
"2") echo "Pas de Droit d'Execution " && GdroitEx=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac
read var

echo
echo "Droit pour Autre : "
echo "Lecture : "
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read AdroitL
cd /script/interface_gestion
case $AdroitL in
"1") echo "Droit de Lecture OK " && AdroitL=1 ;;
"2") echo "Pas de Droit de Lecture " && AdroitL=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac


read var
echo
echo "Ecriture"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read AdroitE
cd /script/interface_gestion
case $AdroitE in
"1") echo "Droit d'Ecriture OK " && AdroitE=1 ;;
"2") echo "Pas de Droit d'Ecriture " && AdroitE=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

read var
echo
echo "Execution"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read AdroitEx
cd /script/interface_gestion
case $AdroitEx in
"1") echo "Droit d'Execution OK " && AdroitEx=1 ;;
"2") echo "Pas de Droit d'Execution " && AdroitEx=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

let droitchiffre1=$PdroitL+$PdroitE+$PdroitEx
let droitchiffre2=$GdroitL+$GdroitE+$GdroitEx
let droitchiffre3=$AdroitL+$AdroitE+$AdroitEx

chmod $droitchiffre1$droitchiffre2$droitchiffre3 `cat temp5`
echo "Droits effectues "
echo
echo "Appuyer sur Entree pour revenir au menu "
read var
cd /script/interface_gestion
./gestion_systeme.sh

read var2
} ;;

"2") {
clear
echo "Vous etes actuellement dans le repertoire $PWD "
echo "Voici la liste des fichiers "
ls * > /script/interface_gestion/temp/temp8.txt
echo
cd /script/interface_gestion/temp
awk '{ print NR, $0 }' temp8.txt |more
echo
echo -n "Choix : "
read var
awk -v "awkvar=$var" 'NR==awkvar { print $1 }' temp8.txt > temp9
echo
echo "Quels droits voulez vous attribuer a ce fichier ? "
read var2

echo
echo "Droit pour Proprietaire : "
echo "Lecture : "
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read PdroitL
cd /script/interface_gestion
case $PdroitL in
"1") echo "Droit de Lecture OK " && PtdroitL=4 ;;
"2") echo "Pas de Droit de Lecture " && PtdroitL=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac


read var
echo
echo "Ecriture"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read PdroitE
cd /script/interface_gestion
case $PdroitE in
"1") echo "Droit d'Ecriture OK " && PtdroitE=4 ;;
"2") echo "Pas de Droit d'Ecriture " && PtdroitE=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

read var
echo
echo "Execution"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read PdroitEx
cd /script/interface_gestion
case $PdroitEx in
"1") echo "Droit d'Execution OK " && PdroitEx=4 ;;
"2") echo "Pas de Droit d'Execution " && PdroitEx=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac


read var2
echo
echo "Droit pour Groupe : "
echo "Lecture : "
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read GdroitL
cd /script/interface_gestion
case $GdroitL in
"1") echo "Droit de Lecture OK " && GdroitL=2 ;;
"2") echo "Pas de Droit de Lecture " && GdroitL=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac


read var
echo
echo "Ecriture"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read GdroitE
cd /script/interface_gestion
case $GdroitE in
"1") echo "Droit d'Ecriture OK " && GdroitE=2 ;;
"2") echo "Pas de Droit d'Ecriture " && GdroitE=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

read var
echo
echo "Execution"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read GdroitEx
cd /script/interface_gestion
case $GdroitEx in
"1") echo "Droit d'Execution OK " && GdroitEx=2 ;;
"2") echo "Pas de Droit d'Execution " && GdroitEx=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

read var2
echo
echo "Droit pour Autre : "
echo "Lecture : "
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read AdroitL
cd /script/interface_gestion
case $AdroitL in
"1") echo "Droit de Lecture OK " && AdroitL=1 ;;
"2") echo "Pas de Droit de Lecture " && AdroitL=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac


read var
echo
echo "Ecriture"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read AdroitE
cd /script/interface_gestion
case $AdroitE in
"1") echo "Droit d'Ecriture OK " && AdroitE=1 ;;
"2") echo "Pas de Droit d'Ecriture " && AdroitE=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

read var
echo
echo "Execution"
echo "1) Oui "
echo "2) Non "
echo
echo -n "Votre Choix : "
read AdroitEx
cd /script/interface_gestion
case $AdroitEx in
"1") echo "Droit d'Execution OK " && AdroitEx=1 ;;
"2") echo "Pas de Droit d'Execution " && AdroitEx=0 ;;
*) echo "Erreur de saisie " && read var && ./gestion_systeme.sh ;;
esac

let droitchiffre1=$PdroitL+$PdroitE+$PdroitEx
let droitchiffre2=$GdroitL+$GdroitE+$GdroitEx
let droitchiffre3=$AdroitL+$AdroitE+$AdroitEx

chmod $droitchiffre1$droitchiffre2$droitchiffre3 `cat temp9`
echo "Droits effectues "
echo
echo "Appuyer sur Entree pour revenir au menu "
read var
cd /script/interface_gestion
./gestion_systeme.sh

} ;;

*) echo "Veuillez saisir un chiffre entre 1 et 2 (Appuyer sur Entree) " && read var5 && ./gestion_systeme.sh ;;
esac

}

##########################################################
#14) Modifier le proprietaire d'un fichier ou un repertoire #
##########################################################

fctmodifierproprietaire() {
clear
echo "Sur quoi voulez vous modifier les droits ? "
echo
echo "1) Un dossier "
echo "2) Un fichier "
echo
echo -n "Votre Choix : "
read var

case $var in
"1") {
clear
ls -d */ > /script/interface_gestion/temp/temp4.txt
echo "Voici la liste des dossier : "
echo
cd /script/interface_gestion/temp
awk '{ print NR, $0 }' temp4.txt
echo
echo -n "Votre choix : "
read var
awk -v "awkvar=$var" 'NR==awkvar { print $1 }' temp4.txt > temp5

clear
echo "Voici la liste des utilisateurs : "
echo
cat /etc/passwd |grep '/bash' > /script/interface_gestion/temp/users.txt
cd /script/interface_gestion/temp
awk -F ":" '{ print NR, $1 }' users.txt |more
echo
echo -n "Choix : "
read choix
awk -F ":" -v "awkvar=$choix" 'NR==awkvar { print $1 }' users.txt > users

sudo chown -v $choix `cat temp5`
echo "Changement de proprietaire effectue "
echo
echo "Appuyer sur Entree pour revenir au menu "
read va
cd /script/interface_gestion
./gestion_systeme.sh

} ;;
"2") {
clear
echo "Vous etes actuellement dans le repertoire $PWD "
echo "Selectionner le fichier sur lequel vous voulez faire une lien "
ls * > /script/interface_gestion/temp/temp8.txt
cd /script/interface_gestion/temp
awk '{ print NR, $0 }' temp8.txt |more
echo -n "Choix : "
read var3
awk -v "awkvar=$var" 'NR==awkvar { print $1 }' temp8.txt > temp9
clear
echo "Voici la liste des utilisateurs : "
echo
cat /etc/passwd |grep '/bash' > /script/interface_gestion/temp/users.txt
cd /script/interface_gestion/temp
awk -F ":" '{ print NR, $1 }' users.txt |more
echo
echo -n "Choix : "
read choix
awk -F ":" -v "awkvar=$choix" 'NR==awkvar { print $1 }' users.txt > users
sudo chown -v $choix `cat temp9`
echo "Changement de proprietaire effectue "
echo
echo "Appuyer sur Entree pour revenir au menu "
read va
cd /script/interface_gestion
./gestion_systeme.sh
} ;;
*) cd /script/interface_gestion
echo "Veuillez saisir un chiffre entre 1 et 2 (Appuyer sur Entree) " && read var5 && ./gestion_systeme.sh ;;
esac
echo
echo "Appuyer sur Entree pour revenir au menu "
read var
./gestion_systeme.sh
}

####################################################
#15) Modifier le groupe d'un fichier ou un repertoire #
####################################################

fctmodifiergroupe() {
clear
echo "Sur quoi voulez vous modifier les droits ? "
echo
echo "1) Un dossier "
echo "2) Un fichier "
echo
echo -n "Votre Choix : "
read var
case $var in
"1") {
clear
ls -d */ > /script/interface_gestion/temp/temp4.txt
echo "Voici la liste des dossier : "
echo
cd /script/interface_gestion/temp
awk '{ print NR, $0 }' temp4.txt
echo
echo -n "Votre choix : "
read var
awk -v "awkvar=$var" 'NR==awkvar { print $1 }' temp4.txt > temp5
echo "Veuillez choisir le nom du groupe :"

cat /etc/group > /script/interface_gestion/temp/group.txt
awk -F ":" '{ print NR, $1 }' group.txt |more
echo
echo -n "Choix : "
read var
cd /script/interface_gestion/temp
awk -F ":" -v "awkvar=$var" 'NR==awkvar { print $1 }' group.txt > group2.txt
awk -F ":" -v "awkvar2=$var" 'NR==awkvar2 { print $3 }' group.txt > numgroup.txt
read < group2.txt
clear

sudo chown :$REPLY `cat temp5`
echo "Changement de groupe effectue "
echo "Appuyer sur Entree pour revenir au menu "
read va
cd /script/interface_gestion
./gestion_systeme.sh

} ;;
"2") {
clear
echo "Vous etes actuellement dans le repertoire $PWD "
echo "Selectionner le fichier sur lequel vous voulez faire une lien "
ls * > /script/interface_gestion/temp/temp8.txt
cd /script/interface_gestion/temp
awk '{ print NR, $0 }' temp8.txt
echo -n "Choix : "
read var3
awk -v "awkvar=$var" 'NR==awkvar { print $1 }' temp8.txt > temp9
echo
eecho "Veuillez choisir le nom du groupe :"

cat /etc/group > /script/interface_gestion/temp/group.txt
cd /script/interface_gestion/temp
awk -F ":" '{ print NR, $1 }' group.txt |more
echo -n "Choix : "
read var
awk -F ":" -v "awkvar=$var" 'NR==awkvar { print $1 }' group.txt > group2.txt
awk -F ":" -v "awkvar2=$var" 'NR==awkvar2 { print $3 }' group.txt > numgroup.txt
read < group2.txt
clear

read var3
sudo chown :$REPLY `cat temp9`
echo "Changement de groupe effectue "
echo "Appuyer sur Entree pour revenir au menu "
read va
} ;;
*) cd /script/interface_gestion
echo "Veuillez saisir un chiffre entre 1 et 2 (Appuyer sur Entree) " && read var5 && ./gestion_systeme.sh ;;
esac
echo
echo "Appuyer sur Entree pour revenir au menu "
read var
cd ..
./gestion_systeme.sh
}


echo "###############################################################"
echo "# MENU #"
echo "###############################################################"
echo ""
echo "1) Lister le repertoire courant "
echo "2) Changer de répertoire courant "
echo "3) Ajouter un repertoire "
echo "4) Supprimer un repertoire "
echo "5) Copier un repertoire et son contenu "
echo "6) Renommer un repertoire "
echo "7) Créer un lien symbolique sur un repertoire "
echo "8) Copier un fichier "
echo "9) Renommer un fichier "
echo "10) Créer un lien supplémentaire sur un fichier "
echo "11) Effacer un fichier "
echo "12) Effacer tous les fichiers du répertoire "
echo "13) Modifier les droits sur un fichier ou sur un repertoire "
echo "14) Modifier le proprietaire d'un fichier ou d'un repertoire "
echo "15) Modifier le groupe d'un fichier ou d'un repertoire "
echo "16) Revenir au Menu principale "
echo "17) Quittez "

read choix

case $choix in
"1") fctlisterrepertoircourant ;;
"2") fctchangerrepertoire ;;
"3") fctajouterrepertoire ;;
"4") fctsupprimerrepertoire ;;
"5") fctcopierrepetsoncontenu ;;
"6") fctrenommerrepertoire ;;
"7") fctlienrepertoire ;;
"8") fctcpfichier;;
"9") fctrenommerfichier ;;
"10") fctlienfichier ;;
"11") fctsupprimerfichier ;;
"12") fcteffacertslsfichierrepertoire ;;
"13") fctmodifierdroits ;;
"14") fctmodifierproprietaire ;;
"15") fctmodifiergroupe ;;
"16") cd /script/interface_gestion/
./Menu.sh ;;
"17") echo "bye bye" ;;
*) echo "Veuillez saisir un chiffre entre 1 et 4" && read var && ./Menu.sh ;;
esac

Voici mon fichier gestion_processus :

#!/bin/bash
# Fichier "Gestion du systeme de fichier.sh"

clear

####################################
# Lister tous les processus actifs #
####################################

listerprocessus() {
clear
echo "Appuyer sur Entree pour lister les processus "
read var
ps ax|more
echo "Appuyer sur Entree pour revenir au menu "
read var
cd script/interface_gestion/
./gestion_processus.sh
}

#############################################
# Lister les processus pour un utilisateur #
#############################################

listerprocessususer() {
clear
echo "Voici la liste des utilisateurs : "
cat /etc/passwd |grep '/bash' > /script/interface_gestion/temp/users.txt
cd /script/interface_gestion/temp
awk -F ":" '{ print NR, $1 }' users.txt
echo -n "Choix : "
read var
awk -F ":" -v "awkvar=$var" 'NR==awkvar { print $1 }' users.txt > users
ps aux |grep `cat users`
echo "Appuyer sur Entree pour revenir au menu "
read var
cd /script/interface_gestion/
./gestion_processus.sh
}

########################
# Arreter un processus #
########################

arreterprocessus() {
clear
echo "Voici la liste des processus : "
ps -e
#sed '1d' processus.txt > processus2.txt
echo "Veuillez ecrire le numéro PID du processus que vous voulez arreter"
echo
echo -n "Choix : "
read choix
echo "Appuyer sur Entrer pour valider l'arret du processus selectionne "
read var
kill $choix
echo "Appuyer sur Entree pour revenir au menu "
read var
cd script/interface_gestion/
./gestion_processus.sh
}

########################
# Arreter le système#
########################

arretersysteme() {
clear
echo "Appuyer sur Entrer pour valider l'arret du systeme "
read var
echo "Arret du systeme en cours"
sudo init 0
}


echo "###############################################################"
echo "# Gestion du systeme de fichier #"
echo "###############################################################"
echo ""
echo "1) Lister tous les processus actifs "
echo "2) Lister les processus pour un utilisateur "
echo "3) Arreter un processus "
echo "4) Arreter le systeme "
echo "5) Revenir au menu principal "
echo "6) Quittez "
echo
echo -n "Votre choix : "
read choix

case $choix in
"1") listerprocessus ;;
"2") listerprocessususer ;;
"3") arreterprocessus ;;
"4") arretersysteme ;;
"5") ./Menu.sh ;;
"6") clear && echo "Au revoir " && exit ;;
*) cd script/interface_gestion/
echo "Veuillez saisir un chiffre entre 1 et 6 (Touche Entree pour revenir au menu)" && read var && ./gestion_processus.sh ;;
esac

Et enfin voici mon fichier gestion_utilisateurs.sh

#!/bin/bash
# Fichier "Gestion du systeme de fichier.sh"

clear

###############################
# Creer un compte utilisateur #
###############################

creerutilisateur() {
clear
echo "Ajout d'un utilisateur "
echo
echo "Veuillez ecrire le nom du nouvel utilisateur, puis remplir les champs demandés"
echo -n "Nom : "
read newuser
sudo adduser $newuser

echo "Appuyer sur Entree pour revenir au menu "
read var
cd script/interface_gestion/
./gestion_utilisateurs.sh
}

###################################
# Supprimer un compte utilisateur #
###################################

supprimercompte() {
clear
echo "Voici la liste des utilisateurs : "
cat /etc/passwd |grep '/bash' > /script/interface_gestion/temp/users.txt
cd script/interface_gestion/temp
awk -F ":" '{ print NR, $1 }' users.txt
echo -n "Choix : "
read var
awk -F ":" -v "awkvar=$var" 'NR==awkvar { print $1 }' users.txt > users
sudo userdel -r `cat users`
echo "Utilisateur supprimé "
echo
echo "Appuyer sur Entree pour revenir au menu "
read var
cd script/interface_gestion/
./gestion_utilisateurs.sh
}

#############################################
# Creer les comptes pour une promo d'eleves #
#############################################

creercomptespromo() {
clear
echo "Ajout d'un groupe "
echo
echo "Veuillez ecrire le nom du nouveau groupe, puis remplir les champs demandés "
echo -n "Nom du groupe : "
read newgroup
sudo groupadd $newgroup
echo
echo "Le nouveau groupe "$newgroup "a ete cree "
echo

echo "Voulez creer un utilisateur : "
echo "1) Oui "
echo "2) Non "
echo
echo -n "Choix : "
read oui
while test $oui == 1
do
echo
echo "Veuillez ecrire le nom du nouvel utilisateur, puis remplir les champs demandés"
echo -n "Nom : "
read newuser
sudo useradd -s /bin/bash -g $newgroup -m -k /dev/null $newuser

echo
echo "Utilisateur cree "



echo
echo "Voulez creer un utilisateur : "
echo "1) Oui "
echo "2) Non "
echo
echo -n "Choix : "
read oui

done
echo "Appuyer sur Entree pour revenir au menu "
read var
cd script/interface_gestion/
./gestion_utilisateurs.sh
}

#################################################
# Supprimer les comptes pour une promo d'eleves #
#################################################

supprimercomptespromo() {
clear
echo "Voici la liste des groupes : "
cat /etc/group > /script/interface_gestion/temp/group.txt
cd script/interface_gestion/temp
awk -F ":" '{ print NR, $1 }' group.txt
echo -n "Choix : "
read var
awk -F ":" -v "awkvar=$var" 'NR==awkvar { print $1 }' group.txt > group2.txt
awk -F ":" -v "awkvar2=$var" 'NR==awkvar2 { print $3 }' group.txt > numgroup.txt
read < numgroup.txt
clear
echo "Voici tous les utilisateurs du groupe : "
cat /etc/passwd |grep $REPLY > cd script/interface_gestion/temp/numgroup2.txt
cd script/interface_gestion/temp/
awk -F ":" '{ print $1 }' numgroup2.txt > numgroup3.txt
cat numgroup3.txt
echo
echo "Appuyer sur Entree pour supprimer tous ces utilisateurs "
read toto
for i in $(cat numgroup3.txt) ;
do
sudo userdel -r $i
done
echo "Tous les Utilisateurs ont ete supprimés "
echo
echo "Appuyer sur Entree pour supprimer le compte "

read < /script/interface_gestion/group2.txt
sudo delgroup $REPLY
echo "Le groupe a ete supprime"
echo
echo "Appuyer sur Entree pour revenir au menu "
read toto
cd script/interface_gestion/
./gestion_utilisateurs.sh



}

###########################################################
# Envoyer un message immediat sur l'ecran d'un ordinateur #
###########################################################

envoyemessageuser() {
clear
echo "Voici la liste des utilisateurs (Vous ne pouvez pas envoyer de message a 'root') : "
cat /etc/passwd |grep '/bash' > /script/interface_gestion/temp/users.txt
cd cd script/interface_gestion/temp/
awk -F ":" '{ print NR, $1 }' users.txt
echo
echo -n "Choix : "
read var
awk -F ":" -v "awkvar=$var" 'NR==awkvar { print $1 }' users.txt > users2.txt
echo
echo "Veuillez taper votre message "
echo -n " Message a envoyer : "
read message
echo "$message" > message.txt
read < users2.txt
`cat message.txt | write $REPLY`
echo
echo "Appuyer sur Entree pour revenir au menu "
read toto
cd script/interface_gestion/
./gestion_utilisateurs.sh
}

############################################################
# Envoyer un message immediat sur l'ecran d'un utilisateur #
############################################################

envoyemessagemonde() {
clear
echo "Veuillez taper votre message "
echo -n " Message a envoyer : "
read message2
echo "$message2" > /script/interface_gestion/temp/message2.txt
sudo wall message2.txt
echo
echo "Appuyer sur Entree pour revenir au menu "
read toto
cd script/interface_gestion/
./gestion_utilisateurs.sh
}

echo "###############################################################"
echo "# Gestion du systeme de fichier #"
echo "###############################################################"
echo ""
echo "1) Creer un compte utilisateur "
echo "2) Supprimer un compte utilisateur "
echo "3) Creer les comptes pour une promo d'eleves "
echo "4) Supprimer les comptes pour une promo d'eleves "
echo "5) Envoyer un message immediat sur l'ecran d'un ordinateur "
echo "6) Envoyer un message immediat sur l'ecran d'un utilisateur "
echo "7) Revenir au menu principal "
echo "8) Quitter "
echo
echo -n "Votre choix : "
read choix

case $choix in
"1") creerutilisateur ;;
"2") supprimercompte ;;
"3") creercomptespromo ;;
"4") supprimercomptespromo ;;
"5") envoyemessageuser ;;
"6") envoyemessagemonde ;;
"7") ./Menu.sh ;;
"8") clear && echo "Au revoir " && exit ;;
*) echo "Veuillez saisir un chiffre entre 1 et 8 (Touche Entree pour revenir au menu)" && read var && ./gestion_processus.sh ;;
esac

Dernière modification par Wizou (Le 18/05/2007, à 12:59)

Hors ligne