screenshot.sh [<setup>]
screenshot.sh setupUne fois les variables définies, vous pourrez appeler simplement le script depuis la ligne de commande, ou bien depuis un "lanceur" sur votre bureau ou encore dans la barre des tâches.
#! /bin/bash # @(#) # @(#) screenshot 17/06/2007 # @(#) version 0.1 - auteur : JP # @(#) # @(#) screenshot est un petit programme de capture d'écran basé sur # @(#) ImageMagic et faisant appel à Xdialog # @(#) # @(#) Usage : screenshot [< setup >] # @(#) ### Fonction setup ### function setup { # Effacement des valeurs avant initialisation sed -i '/^#A$/,/^#Z$/ s|^REPERTOIRE=.*|REPERTOIRE=|' $0 sed -i '/^#A$/,/^#Z$/ s|^NOM_IMAGE=.*|NOM_IMAGE=|' $0 sed -i '/^#A$/,/^#Z$/ s|^EXT=.*|EXT=|' $0 # Choix répertoire REPERTOIRE=$(Xdialog --stdout --title "Répertoire" --dselect "$HOME" 0 0) #Récupération du code retour RETVAL="$?" # Test variable vide. Si oui initialisation valeur par défaut if [ -z "${REPERTOIRE}" ] then REPERTOIRE="${HOME}/" fi # Test code retour Xdialog (voir doc Xdialog pour + d'info) #+ Avec un code égal à 0 on initialise la variable REPERTOIRE avec la valeur fournie #++ Dans tous les autres cas elle est initialisée à la valeur par défaut ($HOME) case "$RETVAL" in 0) sed -i "/^#A$/,/^#Z$/ s|REPERTOIRE=|&\"${REPERTOIRE}\"|" $0 mkdir -p "$REPERTOIRE";; *) Xdialog --title "Annulation" --msgbox "\nLe répertoire par défaut\n\n$HOME\n\n\ sera utilisé...\n" 10 50 sed -i "/^#A$/,/^#Z$/ s|REPERTOIRE=|&\"$HOME/\"|" $0;; esac # Choix nom NOM_IMAGE=$(Xdialog --stdout --title "Nom d'image" \ --inputbox "Entrez un nom de référence pour les images" 0 0) RETVAL="$?" if [ -z "${NOM_IMAGE}" ] then NOM_IMAGE="capture" fi case "$RETVAL" in 0) sed -i "/^#A$/,/^#Z$/ s/NOM_IMAGE=/&\"${NOM_IMAGE}\"/" $0;; *) Xdialog --title "Annulation" --msgbox "\nLe nom générique par défaut\n\ncapture\n\n\ sera utilisé...\n" 10 50 sed -i "/^#A$/,/^#Z$/ s/NOM_IMAGE=/&\"capture\"/" $0;; esac # Choix extension Xdialog --no-tags --radiolist "Type d'extension" 0 0 7 \ ".png" "png - Portable Network Graphic" on \ ".jpg" "jpg ou jpeg - Joint Photographic Experts Group" off \ ".gif" "gif - Graphic Interchange Format" off \ ".bmp" "bmp - BitMaP" off \ ".tif" "tif ou tiff - Tag(ged) Image File Format" off 2>/tmp/radiolist.tmp.$$ RETVAL=$? EXT=$(cat /tmp/radiolist.tmp.$$) rm -f /tmp/radiolist.tmp.$$ case $RETVAL in 0) sed -i.4.bak "/^#A$/,/^#Z$/ s/EXT=/&\"${EXT}\"/" $0;; *) Xdialog --title "Annulation" --msgbox "\nL'extension générique par défaut\n\npng\n\n\ sera utilisée...\n" 10 50 sed -i.5.bak "/^#A$/,/^#Z$/ s/EXT=/&\"\.png\"/" $0;; esac Xdialog --title "Setup" --msgbox "\nLes paramètres de configuration suivant ont été mis à jour :\ \n\nREPERTOIRE = ${REPERTOIRE}\ \nNom = ${NOM_IMAGE}\ \nExtension = ${EXT}\ \n\nVeuillez relancer le script s'il vous plaît...\ \n\n" 0 0 # Le setup est fini, on quitte le script exit } # Test de l'existence d'un paramètre (setup) if [ -n "$1" ] then case "$1" in setup) setup # Paramètre présent, on lance la fonction ;; *) Xdialog --title "Erreur" --msgbox "\nLe script ne prend qu'un paramètre\ \nen option.\n\nUsage : screenshot < setup >\n" 0 0 exit ;; esac fi # On supprime la fonction de la mémoire unset setup ### Déclaration des variables (après lancement du setup) #A REPERTOIRE= NOM_IMAGE= EXT= #Z # Test de l'existence d'un fichier contenant la valeur de la variable ${NOM_IMAGE} #+ Si la condition est vraie alors on extrait le numéro du compteur #++ afin d'incrémenter le compteur ($COUNT) d'un pas if [ -e $(ls "${REPERTOIRE}" | egrep \b${NOM_IMAGE}) ] then NUM=$(ls ${REPERTOIRE} | egrep "\b${NOM_IMAGE}" | sed 's/[^0-9]*//g'| sort -nr | sed 1q) COUNT=$(expr ${NUM} + 1) fi # Boîte de dialogue d'aide à l'ouverture - Facultatif - /usr/bin/Xdialog --title "Screenshot"\ --msgbox "Vous aurez 3 secondes après la fermeture de cette fenêtre\n\ pour choisir le bureau, ou la fenêtre à mettre en avant-plan\n\ pour réaliser votre capture d'écran."\ 0 0 # Commande proprement dite pour la capture, avec un temps de latence de 3 secondes import -pause 3 ${REPERTOIRE}${NOM_IMAGE}${COUNT}${EXT} # Création d'un clône de l'image en y insérant un cadre et une annotation extérieure #+ Épaisseur du cadre / Couleur du fond / Couleur du texte / taille du texte / Emplacement #++ Label (ici la date reformatée)/ Fichier original / Fichier de sortie montage -frame 5 -mattecolor black -fill white -pointsize 14 -geometry +0+0 \ -label "$(date '+%A %e %B %Y %H:%M:%S')" ${REPERTOIRE}${NOM_IMAGE}${COUNT}${EXT} ${REPERTOIRE}${NOM_IMAGE}_annote${COUNT}${EXT}
#commandes.txt conf t router ospf 100 network 50.50.100.0 0.0.0.255 area 0 exit interface fa0/0 ip ospf hello-interval 5 ip ospf dead-interval 20 exit area 0 authentication message-digest end write mem
# liste.txt 10.25.85.46 routeur-marseille switch-assemblee-generale 80.54.136.105
#!/bin/bash #script.sh echo "veuillez donner le mot de passe" stty -echo #[1] read password stty echo export ssh='./ssh.sh' #[2] export telnet='./telnet.sh' export erreur='./rapport_erreurs.log' export temp='./tmp_routeur.log' export cmdcisco='./commandes.txt' export liste='./liste.txt' export password export routeur export commande rm -f $erreur #[3] rm -f $ssh rm -f $telnet cat $liste | while read routeur; do if [ "$routeur" != "" ] then if[ ! -f $ssh ] #[4] then echo 'expect 2>&1 << EOF'>> $ssh echo 'spawn ssh admin@$routeur' >> $ssh echo 'expect {' >> $ssh echo '"Password:" {send "$password\r"}' >> $ssh echo 'timeout {exit}' >> $ssh echo ' }' >> $ssh echo 'expect "#"' >> $ssh cat $cmdcisco | while read commande do echo "send \"$commande\r\"" echo 'expect "#"' done >> $ssh echo 'send "exit\r"' >> $ssh echo 'expect "closed"' >> $ssh echo 'exit' >> $ssh echo 'EOF' >> $ssh chmod +x $ssh #[5] fi time -p $ssh > $temp 2>&1 #[6] COD_RET=$? auth=`cat $temp | grep -c "Password: "` #[7] if [ "$auth" -gt "1" ] then echo "Problème d'authentification sur $routeur !" echo "$routeur : wrong log-in/password" >> $erreur continue fi temps=`grep 'real ' $temp | sed 's/real /§/' | cut -d'§' -f2 | cut -d' ' -f1 | cut -d'.' -f1` if [ $temps -ge 10 -a ! "`grep 'closed' $temp`" ] #[8] then echo "L'equipement $routeur ne réponds pas !"; echo "$routeur : connection timed out" >> $erreur continue fi if [ "$COD_RET" != "0" ] #[9] then #Erreur de connexion a l'équipement en SSH if [ ! -f $telnet ] then echo 'expect 2>&1 << EOF'>> $telnet echo 'spawn telnet $routeur' >> $telnet echo 'send "admin\r"' >> $telnet echo 'expect "Password:"' >> $telnet echo 'send "$password\r"' >> $telnet echo 'expect "#"' >> $telnet cat $cmdcisco | while read commande do echo "send \"$commande\r\"" echo 'expect "#"' done >> $telnet echo 'send "exit\r"' >> $telnet echo 'expect "closed"' >> $telnet echo 'exit' >> $telnet echo 'EOF' >> $telnet chmod +x $telnet fi $telnet > $temp 2>&1 fi COD_RET=$? auth=`cat $temp | grep -c "Password: "` #[10] if [ "$auth" -gt "1" ] then echo "Problème d'authentification sur $routeur !" echo "$routeur : wrong log-in/password" >> $erreur elif [ "`grep 'Host name lookup failure' $temp`" ] then echo "l'equipement $routeur n'existe pas !" echo "$routeur : does not exist" >> $erreur elif [ "`grep 'Unknown host' $temp`" ] then echo "la saisie de l'ip ou du nom $routeur est incorrecte !" echo "$routeur : wrong spelling" >> $erreur elif [ "`grep 'send: spawn id exp4 not open' $temp`" ] then echo "/!\ ERREUR dans la procédure. Consultez le fichier log de $routeur !!!" echo "$routeur : Expect script execution failed !" >> $erreur cp $temp $routeur.error.log elif [ "`grep 'Authentication failed' $temp`" ] then echo "Mot de passe erroné pour $routeur !" echo "$routeur : wrong log-in/password" >> $erreur elif [ "`grep 'Connection refused' $temp`" ] then echo "Connexion à distance sur $routeur désactivé !" echo "$routeur : vty connection disabled" >> $erreur elif [ "`grep 'No route to host' $temp`" ] then echo "Alias DNS $routeur existant mais IP invalide !" echo "$routeur : No route to host" >> $erreur elif [ "`grep 'ProCurve' $temp`" ] then echo "routeur $routeur HP et non Cisco !" echo "$routeur : non Cisco router (HP ProCurve)" >> $erreur elif [ "`grep 'Alcatel' $temp`" ] then echo "routeur $routeur Alcatel et non Cisco !" echo "$routeur : non Cisco router (Alcatel)" >> $erreur elif [ "`grep 'Welcome to X1000' $temp`" ] then echo "routeur $routeur X1000 et non Cisco !" echo "$routeur : non Cisco equipement (X1000)" >> $erreur elif [ "`grep '% Unknown command' $temp`" -o "`grep '% Invalid' $temp`" ] then echo "/!\ Commandes Cisco non reconnues par l'equipement. Consultez le fichier log de $routeur !!!" echo "$routeur : Unrecognized commands found" >> $erreur cp $temp $routeur.error.log elif [ "`grep 'Connected to ' $temp`" -o "`grep 'Connection closed by foreign host.' $temp`" ] then echo "$routeur Telnet OK !" elif [ "`grep 'Connexion enregistree sur le terminal' $temp`" -o "`grep 'Connection to ' $temp`" ] then echo "$routeur SSH OK !" elif [ "$COD_RET" != "0" ] then echo "Problème de connexion a l'equipement $routeur !" echo "$routeur : connection problem" >> $erreur fi fi done rm -f $temp #[11] exit
#!/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 " \033[31m Supprimer ou créer un utilisateur ? \033[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 "\033[31m L'utilisateur $user à bien été créé ! \033[00m" else echo -e "\033[31m Echec, l'utilisateur $user n'a pas été créé, vérifier vos données... \033[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 "\033[37m**** Reprise du script... ****\033[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 "\033[31m La suppression de l'utilisateur $utildel est confirmée \033[00m" else echo -e "\033[31m Echec, de la suppression de l'utilisateur $utildel, vérifier vos données... \033[00m" fi echo "Appuyer sur la touche <Entrée> pour revenir au menu..." read touche case $touche in *)echo -e "\033[37m**** Reprise du script... ****\033[00m";; esac else exit 0 fi fi menu_utilisateur # retour au sous menu de la fonction } function creation_supp_group () { echo -e " \033[31m Supprimer ou créer un groupe ? \033[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 "\033[31m Le group $group a bien été créé ! \033[00m" else echo -e "\033[31m Echec, le group $group n'a pas été créé, vérifier vos données... \033[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 "\033[37m**** Reprise du script... ****\033[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 "\033[31m La suppression du group $group est confirmée \033[00m" else echo -e "\033[31m Echec, de la suppression du group $group, vérifier vos données... \033[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 "\033[37m**** Reprise du script... ****\033[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 "\033[37m**** Reprise du script... ****\033[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 "\033[31m L'utilisateur $nom a bien été rajouté à Samba \033[00m" else echo -e "\033[31m Echec l'utilisateur $nom n'a pas été rajouté à Samba, vérifier le nom... \033[00m" fi echo "Appuyer sur la touche <Entrée> pour continuer..." read touche case $touche in *)echo -e "\033[37m**** Reprise du script... ****\033[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 "\033[31m L'utilisateur $nom a bien été rajouté au groupe $group \033[00m" else echo -e "\033[31m Echec l'utilisateur $nom n'a pas été rajouté au groupe $group, vérifier vos données... \033[00m" fi echo "Appuyer sur la touche <Entrée> pour continuer..." read touche case $touche in *)echo -e "\033[37m**** Reprise du script... ****\033[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 "\033[37m**** Reprise du script... ****\033[00m";; esac menu_utilisateur } function Menu_principal () { Menu } function menu_utilisateur () { # menu de la sous fonction clear # "gestion des utilisateurs" echo "" echo -e "\033[36mProjet Linux eXia 2008 \033[00m" echo -e " \033[36m3ème année RIR \033[00m " echo -e " \033[37m________________________________\033[00m " echo -e " \033[37m| Gestion des utilisateurs |\033[00m " echo"" echo -e "\033[33m*** MENU *** :\033[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 "\033[31m Le(s) processus $PROCESS on été arrêtés \033[00m" else echo -e "\033[31m Echec le(s) processus $PROCESS n'on pas été arrêtés, vérifier le PID \033[00m" fi done echo "Appuyer sur la touche <Entrée> pour continuer..." read touche case $touche in *)echo -e "\033[37m**** Reprise du script... ****\033[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 "\033[31m Le fichier Log de récupération des processus a été créé sur le bureau \033[00m" echo "Appuyer sur la touche <Entrée> pour continuer..." read touche case $touche in *)echo -e "\033[37m**** Reprise du script... ****\033[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 "\033[31m Le fichier resolv.conf du $(date +%d_%m_%y) est bien sauvegardé sur le bureau \033[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 "\033[37m**** Reprise du script... ****\033[00m";; esac menu_sauv } function sauv_suppr_autre() { echo -e " \033[31m Supprimer ou Sauvegarder ? \033[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 "\033[31m La sauvegarde a été réalisée \033[00m" else echo -e "\033[31m Echec, la sauvegarde n'a pas été réalisée, vérifier vos données... \033[00m" fi echo "Appuyer sur la touche <Entrée> pour continuer..." read touche case $touche in *)echo -e "\033[37m**** Reprise du script... ****\033[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 "\033[31m La suppression de $chem est confirmée \033[00m" else echo -e "\033[31m Echec de la suppression de $chem, vérifier vos données... \033[00m" fi echo "Appuyer sur la touche <Entrée> pour continuer..." read touche case $touche in *)echo -e "\033[37m**** Reprise du script... ****\033[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 "\033[31m Echec, le répertoire existe déjà !\033[00m" else mkdir "$nom" chmod 0733 $nom echo -e "\033[31m Le dossier $nom a été créé avec les droits sur le bureau \033[00m" fi echo "Appuyer sur la touche <Entrée> pour continuer..." read touche case $touche in *)echo -e "\033[37m**** Reprise du script... ****\033[00m";; esac menu_sauv } function recherche_taille () { echo -e "\033[31m La recherche est orientée supérieure ou inférieure à la taille du fichier ? \033[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 "\033[37m Résultat avec une taille minimum de $taille kilo :\033[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 "\033[37m Résultat avec une taille maximum de $taille kilo :\033[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 "\033[37m**** Reprise du script... ****\033[00m";; esac menu_sauv } function recherche_nom () { echo " Quel est le fichier ou répertoire que vous souhaitez rechercher ?" read nom_fic echo -e "\033[37m Résultat de votre recherche :\033[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 "\033[37m**** Reprise du script... ****\033[00m";; esac menu_sauv } function Menu_principal () { # retour au menu Principal du script Menu } function menu_sauv () { clear echo "" echo -e "\033[36mProjet Linux eXia 2008 \033[00m" echo -e " \033[36m3ème année RIR \033[00m " echo -e " \033[37m______________________________\033[00m " echo -e " \033[37m| Sauvegarde et Recherche |\033[00m " echo"" echo -e "\033[33m*** MENU *** :\033[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 "\033[37m**** Reprise du script... ****\033[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 "\033[37m**** Reprise du script... ****\033[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 "\033[37m**** Reprise du script... ****\033[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 "\033[37m**** Reprise du script... ****\033[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 "\033[36mProjet Linux eXia 2008 \033[00m" echo -e " \033[36m3ème année RIR \033[00m " echo -e " \033[37m____________________________________________\033[00m " echo -e " \033[37m| Administration du service Networking |\033[00m " echo"" echo -e "\033[33m*** MENU *** :\033[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 "\033[36mProjet Linux eXia 2008 \033[00m" echo -e " \033[36m3ème année RIR \033[00m " echo -e " \033[37m _______________________________ \033[00m " echo -e " \033[37m| Script d'administration |\033[00m " echo"" echo -e "\033[33m*** Menu Principal *** :\033[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 "\033[31m Ce script doit être exécuté en root \033[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 "\033[37m**** Reprise du script... ****\033[00m";; esac exit 0 else Menu fi