Script d’administration Linux

0

script d’administration Linux

Ce script entièrement rédigé pour ceux qui souhaitent approfondir leurs connaissances en scripting Linux. Vous pouvez reprendre des briques de code, l’améliorer, il est là pour ça !

NOTA :

  • Il se peut qu’il reste des caractères spéciaux.
  • L’indentation des notes peut être décalée, elles sont commentées par le #

#!/bin/bash
#*********************************************************************************
#************************************* SCRIPT D'ADMINISTRATION Version 1.2 ***********
#*********************************************************************************
#
# Notes :
#
# ce script peut être modifié en implémentant de nouvelles fonctions
# l'indentation doit être claire et les commandes commentées
# le menu principal d'administration est en fin de script
# ce script ne peut-être exécuter qu'en tant que root
# en cas de rajout de fonction penser à  rappeler la fonction dans le menu principal ou dans le sous menu auquel
# elle est implémentée
# en cas de modification l'interface doit restée au maximum intuitive
#
#
#
#
#
#*************************************************************************************
#***********************************************Fonction gestion des utilisateurs
#*************************************************************************************
function gestion_utilisateur () {
function creation_supp_utilisateur () {	# fonction creation_supp_utilisateur
echo -e " 33[31m Supprimer ou créer un utilisateur ? 33[00m"
echo " Taper x pour supprimer / Taper c pour créer :"
read choix
if [ $choix = "c" ] ;
then
   echo "Entrer le login de l'utilisateur souhaité :"
   read user
   adduser -a $user 2>/dev/null		# 2>/dev/null redirection vers la
    if [ $? -eq 0 ]					# poubelle de la commande précédente
    then    						# si le résultat est faux
      echo -e "33[31m L'utilisateur $user à  bien été créé ! 33[00m"
    else
      echo -e "33[31m Echec, l'utilisateur $user n'a pas été créé, vérifier vos données... 33[00m"
    fi
   echo "Appuyer sur la touche <Entrée> pour revenir au menu..."
   read touche					# lecture de la touche entrée
   case $touche in

   *)echo -e "33[37m**** Reprise du script... ****33[00m";;
   esac
else
 if [ $choix = "x" ] ;
 then
    echo "Donner le nom de l'utilisateur à supprimer :"
    read utildel
    userdel -r $utildel 2>/dev/null		# suppression avec userdel -r
      if [ $? -eq 0 ]				# et vérification
      then
           echo -e "33[31m La suppression de l'utilisateur $utildel est confirmée 33[00m"
      else
           echo -e "33[31m Echec, de la suppression de l'utilisateur $utildel, vérifier vos données... 33[00m"
      fi
      echo "Appuyer sur la touche <Entrée> pour revenir au menu..."
      read touche
      case $touche in

      *)echo -e "33[37m**** Reprise du script... ****33[00m";;
      esac
 else
      exit 0
 fi
fi
menu_utilisateur					# retour au sous menu de la fonction
} 	

function creation_supp_group () {
echo -e " 33[31m Supprimer ou créer un groupe ? 33[00m"
echo " Taper x pour supprimer / Taper c pour créer :"
read choix
if [ $choix = "c" ] ;
then
   echo "Entrer le nom du groupe souhaité :"
   read group
   groupadd $group 2>/dev/null
     if [ $? -eq 0 ]
     then
        echo -e "33[31m Le group $group a  bien été créé ! 33[00m"
     else
        echo -e "33[31m Echec, le group $group n'a pas été créé, vérifier vos données... 33[00m"
     fi
       echo "Voulez-vous vérifier en regardant le fichier /etc/group ? (y/n)"
	read rep
	  if [ $rep = "y" ] ;
	  then
		vi /etc/group			# vi permet d'éditer et cat est
	  else						# plus adapté pour cette
	        echo "Appuyer sur la touche <Entrée> pour revenir au menu..."
                read touche
                case $touche in

	        *)echo -e "33[37m**** Reprise du script... ****33[00m";;
		esac
		menu_utilisateur
          fi
else
 if [ $choix = "x" ];				# deuxième partie du choix
 then
    echo "Donner le nom du groupe à supprimer :"
    read group
    groupdel $group2>/dev/null		# suppression avec groupdel
     if [ $? -eq 0 ]
     then
         echo -e "33[31m La suppression du group $group est confirmée 33[00m"
     else
        echo -e "33[31m Echec, de la suppression du group $group, vérifier vos données... 33[00m"
     fi

      echo "Voulez-vous vérifier en regardant le fichier /etc/group ? (y/n)"
	read rep
	  if [ $rep = "y" ] ;
	  then
		vi /etc/group
	  else
	        echo "Appuyer sur la touche <Entrée> pour revenir au menu..."
                read touche
                case $touche in

    		*)echo -e "33[37m**** Reprise du script... ****33[00m";;
    		esac
		menu_utilisateur			# retour au menu de la sous fonction
	  fi
 else
   exit 0
 fi
fi
menu_utilisateur					# rappel du sous menu de la fonction
}

function voir_utilisateur () {
who -q 							 		        # montre tous les logins des utilisateurs
echo "Appuyer sur la touche <Entrée> pour continuer..."	        # connectés
read touche
case $touche in

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
menu_utilisateur
}

function ajout_user_samba () {
echo "Donner le nom de l'utilisateur à  implémenter à  Samba :"
read nom
smbpasswd -a $nom 2>/dev/null		# rajout de l'utilisateur à samba par
    if [ $? -eq 0 ]					# smbpasswd et vérification
    then
      echo -e "33[31m L'utilisateur $nom a bien été rajouté à Samba 33[00m"
    else
      echo -e "33[31m Echec l'utilisateur $nom n'a pas été rajouté à Samba, vérifier le nom... 33[00m"
    fi
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
menu_utilisateur
}

function ajout_user_group () {
echo "Donner le nom de l'utilisateur à rajouter dans un groupe :"    # Note : l'interface doit être intuitive
read nom
echo "Donner le nom du groupe dans lequel vous voulez implémenter cet utilisateur :"
read group
adduser $nom $group 2>/dev/null			# rajout avec adduser d'un utilisateur à 
     if [ $? -eq 0 ]						# un groupe
     then
	echo -e "33[31m L'utilisateur $nom a bien été rajouté au groupe $group 33[00m"
     else
	echo -e "33[31m Echec l'utilisateur $nom n'a pas été rajouté au groupe $group, vérifier vos données... 33[00m"
     fi
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
menu_utilisateur
}

function capacite_user () {
echo "La taille des dossiers utilisateurs est de :"
du -s -h /home/*
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
menu_utilisateur
}

function Menu_principal () {
Menu
}

function menu_utilisateur () {	  		# menu de la sous fonction
clear 								# "gestion des utilisateurs"
echo ""
echo -e "33[36mProjet Linux				                   eXia 2008 33[00m"
echo -e " 							   33[36m3ème année RIR 33[00m "
echo -e "                     33[37m________________________________33[00m "
echo -e "                    33[37m|    Gestion des utilisateurs    |33[00m  "
echo""
echo -e "33[33m*** MENU *** :33[00m"
echo""
echo "1 - Créer / Supprimer un utilisateur"
echo "2 - Créer / Supprimer un groupe"
echo "3 - Voir les utilisateurs connectés"
echo "4 - Rajouter un utilisateur à Samba"
echo "5 - Rajouter un utilisateur à un groupe"
echo "6 - Voir la taille des dossiers des utilisateurs"
echo "7 - Revenir au menu Principal"
echo ""
echo "Entrez votre choix :"

read CHOIX						# lecture du choix et appel
case $CHOIX in						# de la fonction concernée
  1)creation_supp_utilisateur;;
  2)creation_supp_group;;
  3)voir_utilisateur;;
  4)ajout_user_samba;;
  5)ajout_user_group;;
  6)capacite_user;;
  7)Menu_principal;;

  *)exit 0;;
esac
}
menu_utilisateur
}								# FIN de la sous fonction
								# gestion_utilisateur
#**********************************************************************************
#******************************************************Fonction tuer un processus
#**********************************************************************************
function tuer_proc () {
ps ax --sort=tty,pid | more								# défilements des processus petit à petit
echo " VEUILLEZ TAPER LE(S) "PID" DU(DES) PROCESS A TUER: "	# par l'utilisation de |more
read PROCESS										# lecture de la saisie avant la boucle POUR
for TRUC in $PROCESS; do
    kill -9 $TRUC 2>/dev/null								# arrêt des processus par kill -9
     if [ $? -eq 0 ]
     then
	echo -e "33[31m Le(s) processus $PROCESS on été arrêtés 33[00m"
     else
	echo -e "33[31m Echec le(s) processus $PROCESS n'on pas été arrêtés, vérifier le PID 33[00m"
     fi
done
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in

*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
Menu
}

# ***********************************************************************************
# *******************************************Fonction Récupérer les processus
# ***********************************************************************************
function recuperer_processus () {
ps -aux >> proccessus_du_$(date +%d_%m_%y).log         # récup et supp de l'ancien fichier de log par >>
echo -e "33[31m Le fichier Log de récupération des processus a été créé sur le bureau 33[00m"
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in

*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
Menu
}

# ***********************************************************************************
# ****************Fonction sauvegarder / rechercher par taille / nom fichier ou répertoire
# ***********************************************************************************
function sauv_recherche_fichier () {
function sauv_resol_conf () {
rsync -a /etc/resolv.conf /home/dyllan/Bureau/sauv_resol.conf_du_$(date +%d_%m_%y).log				# utilisation de rsync pour une
echo -e "33[31m Le fichier resolv.conf du $(date +%d_%m_%y) est bien sauvegardé sur le bureau 33[00m"	                                                                       # sauvegarde distante mais non
echo "Appuyer sur la touche <Entrée> pour continuer..."	       # présentée ici
read touche
case $touche in

*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
menu_sauv
}

function sauv_suppr_autre() {
echo -e " 33[31m Supprimer ou Sauvegarder ? 33[00m"
echo " Taper x pour supprimer / Taper s pour sauvegarder :"
read choix
if [ $choix = "s" ] ;
then
	echo "Entrez le chemin du repertoire à sauvegarder"      # demande du chemin relatif pour la supp ou
	read chemin							      # la sauvegarde
	echo "Entrez le chemin de l'endroit où vous voulez le sauvegarder"
	read dest
	cp -r $chemin $dest 2>/dev/null		                      # copie du répertoire et tous les fichiers
           if [ $? -eq 0 ]							      # par le rajout du -r pour récursif
           then
		echo -e "33[31m La sauvegarde a été réalisée 33[00m"
     	   else
	        echo -e "33[31m Echec, la sauvegarde n'a pas été réalisée, vérifier vos données... 33[00m"
           fi
          echo "Appuyer sur la touche <Entrée> pour continuer..."
          read touche
	  case $touche in

	  *)echo -e "33[37m**** Reprise du script... ****33[00m";;
          esac
else
 if [ $choix = "x" ];					# 2ème partie du choix : la suppression
 then
        echo "Entrez le chemin du repertoire à supprimer"
	read chem
	rm -r $chem 2>/dev/null
        if [ $? -eq 0 ]
        then
		echo -e "33[31m La suppression de $chem est confirmée 33[00m"
     	else
	        echo -e "33[31m Echec de la suppression de $chem, vérifier vos données... 33[00m"
        fi
        echo "Appuyer sur la touche <Entrée> pour continuer..."
        read touche
	case $touche in

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
        esac
 else
         exit 0
 fi
fi
menu_sauv
} 	

function creer_rep () {
echo "Quel est le nom du répertoire ? (tapez le nom) :"
read nom
if test -x $nom ;
then
  echo -e "33[31m Echec, le répertoire existe déjà  !33[00m"
else
  mkdir "$nom"
  chmod 0733 $nom
  echo -e "33[31m Le dossier $nom a été créé avec les droits sur le bureau 33[00m"
fi
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in

*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
menu_sauv
}

function recherche_taille () {
echo -e "33[31m La recherche est orientée supérieure ou inférieure à la taille du fichier ? 33[00m"
echo " Taper s pour supérieure / Taper i pour inférieure :"
read choix
if [ $choix = "s" ] ;
then
   echo "Donner la taille minimum (en kilo):"
   read taille
   echo -e "33[37m Résultat avec une taille minimum de $taille kilo :33[00m"
   find /* -size +$taille -print				# recherche par taille orientée supérieure
else								# donc demande d'une taille minimum
 if [ $choix = "i" ];
 then
   echo "Donner la taille maximum (en kilo):"
   read taille
   echo -e "33[37m Résultat avec une taille maximum de $taille kilo :33[00m"
   find /* -size -$taille -print				# recherche par taille orientée inférieure
 else								# donc demande d'une taille max
   exit 0
 fi
fi
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in 

*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
menu_sauv
}

function recherche_nom () {
echo " Quel est le fichier ou répertoire que vous souhaitez rechercher ?"
read nom_fic
echo -e "33[37m Résultat de votre recherche :33[00m"
find /* -name $nom_fic						# recherche dans tout le / par le nom
echo "Appuyer sur la touche <Entrée> pour continuer..."	# cette recherche peut prendre du temps
read touche
case $touche in 

*)echo -e "33[37m**** Reprise du script... ****33[00m";;
esac
menu_sauv
}

function Menu_principal () {				# retour au menu Principal du script
Menu
}

function menu_sauv () {
clear
echo ""
echo -e "33[36mProjet Linux				                   eXia 2008 33[00m"
echo -e " 							  33[36m3ème année RIR 33[00m "
echo -e "                     33[37m______________________________33[00m "
echo -e "                    33[37m|    Sauvegarde et Recherche   |33[00m  "
echo""
echo -e "33[33m*** MENU *** :33[00m"
echo""
echo "1 - Sauvegarder le fichier resolv.conf"
echo "2 - Sauvegarder / Supprimer un fichier ou répertoire"
echo "3 - Créer un répertoire"
echo "4 - Recherche d'un fichier / répertoire par sa taille"
echo "5 - Recherche d'un fichier / répertoire par son nom"
echo "6 - Revenir au menu Principal"
echo ""
echo "Entrez votre choix :"

read CHOIX
case $CHOIX in
  1)sauv_resol_conf;;
  2)sauv_suppr_autre;;
  3)creer_rep;;
  4)recherche_taille;;
  5)recherche_nom;;
  6)Menu_principal;;

  *)exit 0;;
esac
}
menu_sauv
}

#********************************************************************************
#***********************************************Fonction Service Networking
#********************************************************************************
function networking () {
function restart () {
/etc/init.d/networking restart		# redémarrage du service networking
echo "revenir au menu ? [y/n]"
read reponse
if [ $reponse = "y" ] ;
then
	menu
else
	echo "Appuyer sur la touche <Entrée> pour continuer..."
        read touche
        case $touche in 

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
	esac
	Menu
fi
}

function stop () {
/etc/init.d/networking stop			# arrêt du service networking par stop
echo "revenir au menu ? [y/n]"
read reponse
if [ $reponse = "y" ] ;
then
	menu
else
	echo "Appuyer sur la touche <Entrée> pour continuer..."
        read touche
        case $touche in

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
	esac
	Menu
fi
}

function start () {				# redémarrage du service networking par
/etc/init.d/networking start			# start
echo "revenir au menu ? [y/n]"
read reponse
if [ $reponse = "y" ] ;
then
	menu
else
	echo "Appuyer sur la touche <Entrée> pour continuer..."
        read touche
        case $touche in

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
	esac
	Menu
fi
}

function edit () {
vi /etc/resolv.conf				# vi permet d'éditer en ligne de commande
clear							# le fichier resolv.conf
echo""
echo "Revenir au menu Administration du service Networking ? [y/n]"
read reponse
if [ $reponse = "y" ] ;
then
	menu
else
	echo "Appuyer sur la touche <Entrée> pour continuer..."
        read touche
        case $touche in

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
	esac
	Menu
fi
}

function Menu_principal () {
Menu
}

function menu () {				# configuration de l'apparence et de la
clear 							# syntaxe du menu d'administration
echo ""						# du service Networking
echo -e "33[36mProjet Linux				                   eXia 2008 33[00m"
echo -e " 							   33[36m3ème année RIR 33[00m "
echo -e "                     33[37m____________________________________________33[00m "
echo -e "                    33[37m|    Administration du service Networking    |33[00m  "
echo""
echo -e "33[33m*** MENU *** :33[00m"
echo""
echo "1 - Restart"
echo "2 - Stop"
echo "3 - Start"
echo "4 - Editer le fichier resolv.conf"
echo "5 - Revenir au menu Principal"
echo ""
echo "Entrez votre choix :"

read CHOIX
case $CHOIX in
  1)restart;;
  2)stop;;
  3)start;;
  4)edit;;
  5)Menu_principal;;

  *)exit 0;;
esac
}
menu
}

#****************************************************************************
#*************************************************Fonction Quitter
#****************************************************************************
function quitter () {
exit
}

#****************************************************************************
#************************************************Fonction MENU
#****************************************************************************
function Menu () {				# conception du menu Principal du script appelant
echo ""						# les sous fonctions
echo -e "33[36mProjet Linux				                   eXia 2008 33[00m"
echo -e " 							   33[36m3ème année RIR 33[00m "
echo -e "                         33[37m _______________________________ 33[00m  "
echo -e "                         33[37m|    Script d'administration    |33[00m  "
echo""
echo -e "33[33m*** Menu Principal *** :33[00m"
echo""
echo "1 - Gestion des utilisateurs"
echo "2 - Gérer les processus"
echo "3 - Récupérer les processus"
echo "4 - Sauvegarde et Recherche"
echo "5 - Administration du service Networking"
echo "6 - Quitter"
echo ""
echo "Entrez votre choix :"
read CHOIX					# lecture du choix et appel des fonctions
case $CHOIX in
  1)gestion_utilisateur;;
  2)tuer_proc;;
  3)recuperer_processus;;
  4)sauv_recherche_fichier;;
  5)networking;;
  6)quitter;;

  *)exit 0;;
esac
}							# FIN de la fonction du menu Principal
if [ ! `id -u` = 0 ]; 				# Vérification de l'identifiant du user
then							# si l'identifiant n'est pas celui de root
   echo -e "33[31m Ce script doit être exécuté en root 33[00m"		# le script n'est pas exécute,
     echo""												# Sinon accès au menu Principal
     echo "**********************************************"
     echo "Appuyer sur la touche <Entrée> pour quitter..."
     echo "**********************************************"
     read touche
     case $touche in

	*)echo -e "33[37m**** Reprise du script... ****33[00m";;
     esac
   exit 0
else
   Menu
fi
VN:F [1.9.12_1141]
Rating: 0.0/5 (0 votes cast)


Leave a Reply

Why ask?

© 2011 blog.lostwallpapers.com. All rights reserved.
.