Aide programme shell
Résolu/Fermé
A voir également:
- Aide programme shell
- Programme demarrage windows 10 - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Désinstaller programme windows 10 - Guide
- Programme démarrage windows 10 - Guide
8 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 déc. 2006 à 22:16
3 déc. 2006 à 22:16
Salut,
j'ai testé ton script chez moi et ça marche
sugestion
pour
Pour l'erreur dans erreur.log tu peux utiliser une variable
Par exemple
j'ai testé ton script chez moi et ça marche
sugestion
pour
test_root() { if [ $USER != "root" ] then echo "l'utilisateur n'est pas root" erreur fi }Même si dans erreur.log tu as les traces de l'exécutions tu peux quand même affiche à l'écran que "voilà c'est bien le root qui exécute le script"
test_root() { if [ $USER != "root" ];then echo "l'utilisateur n'est pas root" erreur else echo "l'utilisateur est root" fi }
Pour l'erreur dans erreur.log tu peux utiliser une variable
Par exemple
*) msg="Erreur.Saisissez à nouveau votre choix" erreur echo $msg pause ;;La fonction erreur
#****************Fonction erreur***************************************** erreur() { echo `date` $msg >> erreur.log echo "" }et la partie qui vérifie si l'utilisateur qui exécute le script et root
#**Test si root lance le script***************************** test_root() { msg="l'utilisateur n'est pas root" if [ $USER != "root" ];then echo $msg erreur else echo "l'utilisateur est root" fi }
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 déc. 2006 à 22:21
3 déc. 2006 à 22:21
Encore une chose
au lieu de `cat /etc/passwd | cut -d: -f1`
tu peux utiliser
au lieu de `cat /etc/passwd | cut -d: -f1`
tu peux utiliser
$(cat /etc/passwd | cut -d: -f1)
Salut lami20j!
Merci beaucoup pour ta réponse.
C'est tout de même bizarre que ça ne fonctionne pas chez moi.
D'après toi, d'où ça peut venir?
Bref, avec ce que tu as mis, j'ai donc modifié le script :
#!/bin/sh
#********************Liste des utilisateurs**************************
liste_users()
{
echo "Liste des utilisateurs"
for params in $(cat /etc/passwd | cut -d: -f1)
do
echo "$params"
done
}
#*****Informations sur un ou plusieurs utilisateurs******************
infos_users()
{
echo "Coordonnées de l'utilisateur dans le système"
who am i
}
#******Liste des processus d'un utilisateur**************************
processus_users()
{
echo "Liste des processus de l'utilisateur"
ps -aux
}
#****************Fonctions répertoire********************************
#********************************************************************
#*****************Vérification du répertoire*************************
verif_rep()
{
echo "Chemin du répertoire :"
read rep
[ -d "$rep" ] && return 0
return 1
}
#*****************Fonction création répertoire***********************
cree_rep()
{
clear
if verif_rep
then echo "$rep existe"
else
if [ ! -z "$rep" ]
then
echo "Création du répertoire $rep"
mkdir -p "$rep"
echo "Répertoire créé"
fi
fi
}
#************Fonction suppression répertoire*************************
Suppr_rep()
{
clear
if verif_rep
then
echo "Suppression du répertoire $rep"
echo "Etes-vous sûr de vouloir supprimer?"
read choix
case "$choix" in
O|o|OUI|oui)
rm -r "$rep"
echo "Répertoire supprimé"
;;
N|n|NON|non)
echo "Suppression annulée"
Menu_principal
;;
*)
erreur
pause
;;
esac
else
msg="$rep inexistant ou n'est pas un répertoire"
echo $msg
erreur
fi
}
#****************Consultation du contenu d'un repertoire************
contenu_rep()
{
clear
if verif_rep
then
ls -l "$rep"
else
msg="$ rep inexistant ou n'est pas un répertoire"
echo $msg
erreur
fi
}
#****************Vérification fichier************************************
verif_fich()
{
echo "Chemin du fichier:"
read nom_fich
N=$(cat $fichier | head -n1 | tr -d'')
if ["$nombre" = "$N"]
then
echo "Fichier existant"
else
msg="Fichier $nom_fich inexistant"
echo $msg
erreur
fi
}
#****************Consultation fichier************************************
Consulte_fich()
{
echo "Chemin du fichier à consulter:"
read nom_fich
if [ -e "$nom_fich" ]
then
cat "$nom_fich"
else
msg="Fichier $nom_fich inexistant"
echo $msg
erreur
fi
}
#****************Modification fichier***************************
Modif_fich()
{
echo "Chemin du fichier à modifier:"
read nom_fich
if [ -e "$nom_fich" ]
then
vi "$nom_fich"
else
echo "Fichier $nom_fich n'existe pas"
erreur
fi
}
#*Détection d'utilisateurs n'ayant pas de répertoire d'accueil************
detect_users()
{
tmp=`cat /etc/passwd | cut -d: -f1,6`
for hash in $tmp
do
login=`echo $hash | cut -d: -f1`
home_dir=`echo $hash | cut -d: -f2`
if [ ! -d $home_dir ]
then
echo "pas de répertoire accueil pour $login"
fi
done
}
#**Test si repertoire utilisateur existant***********************
test_repertoire()
{
if [ -d $HOME ]
then
echo "le repertoire $HOME existe déjà"
erreur
fi
}
#**Test si root lance le script*****************************
test_root()
{
msg="l'utilisateur n'est pas root"
if [ $USER != "root" ];
then
echo $msg
erreur
else
echo "l'utilisateur est root"
fi
}
#****************Fonction erreur*****************************************
erreur()
{
echo `date` $msg >> erreur.log
echo ""
}
#******************Fonction permettant de quitter le programme***********
Quitter_programme()
{
echo "Voulez-vous quitter le programme?"
read reponse
case "$reponse" in
O|o|OUI|oui)
break
;;
N|n|NON|non)
Menu_principal
;;
*)
msg="erreur"
erreur
echo $msg
pause
;;
esac
}
#********************Fonction pause****************************
pause()
{
echo "Appuyer sur Entrée"
read touche
}
#**************Sous-menu informations utilisateurs***********************
Sous_menu_utilisateurs()
{
echo "Informations liees aux utilisateurs"
echo "1- Liste des utilisateurs"
echo "2- Informations sur un ou plusieurs utilisateurs"
echo "3- Liste des processus utilisateurs"
echo "4- Retour au menu principal"
echo "Tapez votre choix"
read choix2
case "$choix2" in
1)
echo "1- Liste des utilisateurs"
liste_users
pause
;;
2)
echo "2- Informations sur un ou plusieurs utilisateurs"
infos_users
pause
;;
3)
echo "3- Liste des processus d'un utilisateur"
processus_users
pause
;;
4)
echo "4- Retour au menu principal"
Menu_principal
;;
*)
erreur
pause
;;
esac
}
#**************Sous-menu sur les répertoires et fichiers*****************
Sous_menu_repertoires_et_fichiers()
{
echo "Fonctions sur les répertoires et fichiers"
echo "1- Creation d'un répertoire"
echo "2- Suppression d'un répertoire"
echo "3- Consultation du contenu d'un répertoire"
echo "4- Consultation d'un fichier"
echo "5- Modification d'un fichier sous un éditeur"
echo "6- Retour au menu principal"
echo "Quel est votre choix?"
read choix3
case "$choix3" in
1)
cree_rep
pause
;;
2)
Suppr_rep
pause
;;
3)
contenu_rep
pause
;;
4)
Consulte_fich
pause
;;
5)
Modif_fich
pause
;;
6)
Menu_principal
;;
*)
erreur
pause
;;
esac
}
#*******************Sous-menu autres fonctions***************************
Sous_menu_diverses_fonctions()
{
echo "Autres fonctions"
echo "1- Détection des utilisateurs n'ayant pas un répertoire d'accueil"
echo "2- Test si le repertoire de l'utilisateur existe"
echo "3- Test si l'utilisateur exécutant le script est root"
echo "4- Retour au menu principal"
read choix4
case "$choix4" in
1)
echo "1- Détection des utilisateurs n'ayant pas un répertoire d'accueil"
detect_users
pause
;;
2)
test_repertoire
pause
;;
3)
test_root
pause
;;
4)
Menu_principal
pause
;;
*)
erreur
pause
;;
esac
}
#*****************Menu principal****************
while :
do
clear
#-----------------Affichage du menu-------------
cat << EOT
1- Informations liées aux utilisateurs
2- Fonctions sur les répertoires et fichiers
3- Diverses fonctions
4- Quitter
EOT
#---------------Fin du menu---------------------
echo "Entrer votre choix :"
read choix
case $choix in
1)
Sous_menu_utilisateurs
;;
2)
Sous_menu_repertoires_et_fichiers
;;
3)
Sous_menu_diverses_fonctions
;;
4)
Quitter_programme
;;
*)
msg="Erreur. Saisissez à nouveau votre choix."
echo $msg
erreur
pause
;;
esac
done
Dis-moi si ça marche.
Merci d'avance
Merci beaucoup pour ta réponse.
C'est tout de même bizarre que ça ne fonctionne pas chez moi.
D'après toi, d'où ça peut venir?
Bref, avec ce que tu as mis, j'ai donc modifié le script :
#!/bin/sh
#********************Liste des utilisateurs**************************
liste_users()
{
echo "Liste des utilisateurs"
for params in $(cat /etc/passwd | cut -d: -f1)
do
echo "$params"
done
}
#*****Informations sur un ou plusieurs utilisateurs******************
infos_users()
{
echo "Coordonnées de l'utilisateur dans le système"
who am i
}
#******Liste des processus d'un utilisateur**************************
processus_users()
{
echo "Liste des processus de l'utilisateur"
ps -aux
}
#****************Fonctions répertoire********************************
#********************************************************************
#*****************Vérification du répertoire*************************
verif_rep()
{
echo "Chemin du répertoire :"
read rep
[ -d "$rep" ] && return 0
return 1
}
#*****************Fonction création répertoire***********************
cree_rep()
{
clear
if verif_rep
then echo "$rep existe"
else
if [ ! -z "$rep" ]
then
echo "Création du répertoire $rep"
mkdir -p "$rep"
echo "Répertoire créé"
fi
fi
}
#************Fonction suppression répertoire*************************
Suppr_rep()
{
clear
if verif_rep
then
echo "Suppression du répertoire $rep"
echo "Etes-vous sûr de vouloir supprimer?"
read choix
case "$choix" in
O|o|OUI|oui)
rm -r "$rep"
echo "Répertoire supprimé"
;;
N|n|NON|non)
echo "Suppression annulée"
Menu_principal
;;
*)
erreur
pause
;;
esac
else
msg="$rep inexistant ou n'est pas un répertoire"
echo $msg
erreur
fi
}
#****************Consultation du contenu d'un repertoire************
contenu_rep()
{
clear
if verif_rep
then
ls -l "$rep"
else
msg="$ rep inexistant ou n'est pas un répertoire"
echo $msg
erreur
fi
}
#****************Vérification fichier************************************
verif_fich()
{
echo "Chemin du fichier:"
read nom_fich
N=$(cat $fichier | head -n1 | tr -d'')
if ["$nombre" = "$N"]
then
echo "Fichier existant"
else
msg="Fichier $nom_fich inexistant"
echo $msg
erreur
fi
}
#****************Consultation fichier************************************
Consulte_fich()
{
echo "Chemin du fichier à consulter:"
read nom_fich
if [ -e "$nom_fich" ]
then
cat "$nom_fich"
else
msg="Fichier $nom_fich inexistant"
echo $msg
erreur
fi
}
#****************Modification fichier***************************
Modif_fich()
{
echo "Chemin du fichier à modifier:"
read nom_fich
if [ -e "$nom_fich" ]
then
vi "$nom_fich"
else
echo "Fichier $nom_fich n'existe pas"
erreur
fi
}
#*Détection d'utilisateurs n'ayant pas de répertoire d'accueil************
detect_users()
{
tmp=`cat /etc/passwd | cut -d: -f1,6`
for hash in $tmp
do
login=`echo $hash | cut -d: -f1`
home_dir=`echo $hash | cut -d: -f2`
if [ ! -d $home_dir ]
then
echo "pas de répertoire accueil pour $login"
fi
done
}
#**Test si repertoire utilisateur existant***********************
test_repertoire()
{
if [ -d $HOME ]
then
echo "le repertoire $HOME existe déjà"
erreur
fi
}
#**Test si root lance le script*****************************
test_root()
{
msg="l'utilisateur n'est pas root"
if [ $USER != "root" ];
then
echo $msg
erreur
else
echo "l'utilisateur est root"
fi
}
#****************Fonction erreur*****************************************
erreur()
{
echo `date` $msg >> erreur.log
echo ""
}
#******************Fonction permettant de quitter le programme***********
Quitter_programme()
{
echo "Voulez-vous quitter le programme?"
read reponse
case "$reponse" in
O|o|OUI|oui)
break
;;
N|n|NON|non)
Menu_principal
;;
*)
msg="erreur"
erreur
echo $msg
pause
;;
esac
}
#********************Fonction pause****************************
pause()
{
echo "Appuyer sur Entrée"
read touche
}
#**************Sous-menu informations utilisateurs***********************
Sous_menu_utilisateurs()
{
echo "Informations liees aux utilisateurs"
echo "1- Liste des utilisateurs"
echo "2- Informations sur un ou plusieurs utilisateurs"
echo "3- Liste des processus utilisateurs"
echo "4- Retour au menu principal"
echo "Tapez votre choix"
read choix2
case "$choix2" in
1)
echo "1- Liste des utilisateurs"
liste_users
pause
;;
2)
echo "2- Informations sur un ou plusieurs utilisateurs"
infos_users
pause
;;
3)
echo "3- Liste des processus d'un utilisateur"
processus_users
pause
;;
4)
echo "4- Retour au menu principal"
Menu_principal
;;
*)
erreur
pause
;;
esac
}
#**************Sous-menu sur les répertoires et fichiers*****************
Sous_menu_repertoires_et_fichiers()
{
echo "Fonctions sur les répertoires et fichiers"
echo "1- Creation d'un répertoire"
echo "2- Suppression d'un répertoire"
echo "3- Consultation du contenu d'un répertoire"
echo "4- Consultation d'un fichier"
echo "5- Modification d'un fichier sous un éditeur"
echo "6- Retour au menu principal"
echo "Quel est votre choix?"
read choix3
case "$choix3" in
1)
cree_rep
pause
;;
2)
Suppr_rep
pause
;;
3)
contenu_rep
pause
;;
4)
Consulte_fich
pause
;;
5)
Modif_fich
pause
;;
6)
Menu_principal
;;
*)
erreur
pause
;;
esac
}
#*******************Sous-menu autres fonctions***************************
Sous_menu_diverses_fonctions()
{
echo "Autres fonctions"
echo "1- Détection des utilisateurs n'ayant pas un répertoire d'accueil"
echo "2- Test si le repertoire de l'utilisateur existe"
echo "3- Test si l'utilisateur exécutant le script est root"
echo "4- Retour au menu principal"
read choix4
case "$choix4" in
1)
echo "1- Détection des utilisateurs n'ayant pas un répertoire d'accueil"
detect_users
pause
;;
2)
test_repertoire
pause
;;
3)
test_root
pause
;;
4)
Menu_principal
pause
;;
*)
erreur
pause
;;
esac
}
#*****************Menu principal****************
while :
do
clear
#-----------------Affichage du menu-------------
cat << EOT
1- Informations liées aux utilisateurs
2- Fonctions sur les répertoires et fichiers
3- Diverses fonctions
4- Quitter
EOT
#---------------Fin du menu---------------------
echo "Entrer votre choix :"
read choix
case $choix in
1)
Sous_menu_utilisateurs
;;
2)
Sous_menu_repertoires_et_fichiers
;;
3)
Sous_menu_diverses_fonctions
;;
4)
Quitter_programme
;;
*)
msg="Erreur. Saisissez à nouveau votre choix."
echo $msg
erreur
pause
;;
esac
done
Dis-moi si ça marche.
Merci d'avance
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 déc. 2006 à 22:45
3 déc. 2006 à 22:45
chez moi ça marche
affiche le resultat de la commande
affiche le resultat de la commande
sh -x ton_script
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 déc. 2006 à 23:06
3 déc. 2006 à 23:06
Ca veut dire que ça marche?
Un petit conseil
rend ton code plus lisible en utilisant l'indentation
Par exemple
sans indentation
Avec indentation
Un petit conseil
rend ton code plus lisible en utilisant l'indentation
Par exemple
sans indentation
case "$choix3" in 1) cree_rep pause ;; 2) Suppr_rep pause ;; 3) contenu_rep pause ;; 4) Consulte_fich pause ;; 5) Modif_fich pause ;; 6) Menu_principal ;; *) erreur pause ;; esac }
Avec indentation
case "$choix3" in 1) cree_rep pause ;; 2) Suppr_rep pause ;; 3) contenu_rep pause ;; 4) Consulte_fich pause ;; 5) Modif_fich pause ;; 6) Menu_principal ;; *) erreur pause ;; esac