Pages : 1
#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.
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
Pages : 1