Travaux Pratiques - BASH

Vous savez maintenant tout ce qu'il faut pour créer des scripts BASH automatisant des tâches.

Vous aurez aujourd'hui à créer des scripts BASH. Nommez bien vos fichiers comme indiqué à chaque début d'exercice

Seul le travail en binôme est autorisé

Vos scripts sont à envoyer à l'adresse jeremysalmon.openlab@gmail.com

Veillez bien à mettre les noms, prénoms de votre binôme.

Exercice 1 : compress.sh

Système de backup

Créer un script qui permet de compresser l'ensemble du répertoire /etc/ dans un fichier .tar.gz.

Le script prend un paramètre, le nom du fichier à générer

Le résultat de la compression est à mettre dans /tmp/

Résultat attendu :

compress.sh 21052016

Devra générer un fichier 21052015.tar.gz dans /tmp/

Ce fichier contiendra l'ensemble du répertoire /etc/

#!/bin/bash

if [ $# -ne 1 ]
then
    echo "Utilisation : compress.sh nom_du_fichier"
    exit
fi

tar vczf /tmp/$1.tar.gz /etc/ > /dev/null 2>&1

echo "Compression dans /tmp/$1.tar.gz effectuee"

Exercice 2 : sshHack.sh

Créer un script qui analyse un fichier de log d'authentification et qui repère les erreur d'authenficiation SSH.

Récupérer le fichier auth.log à la racine de ce support de cours.

Le fichier à analyser sera passé en paramètre

sshHack.sh /tmp/auth.log

affichera

Il y a 39 erreurs d'authentification
Dernière erreur d'authentification à 23:12:34
#!/bin/bash

if [ $# -ne 1 ]
then
    echo "Utilisation : sshHack.sh CHEMIN_ET_NOM_FICHIER"
    exit
fi

if [ ! -f $1 ]
then
    echo "Le fichier $1 n existe pas"
    exit
fi

compteur=`grep "authentication failure" auth.log |wc -l`

echo "$compteur erreurs d authentification dans $1"
exit

Exercice 3 : isInstalled.sh

Créer un script qui retourne si un paquet est installé ou non sur la machine.

Le nom du paquet a rechercher est à passer en paramètre

isInstalled.sh mysql-server

Retournera :

Le paquet est INSTALLE si il est présent sur la machine ou Le paquet est MANQUANT s'il n'est pas installé #!/bin/bash

if [ $# -ne 1 ]
then
    echo "Utilisation : isInstalled.sh NOM_DU_PAQUET"
    exit
fi

installed=`dpkg-query -l $1 |grep ii |wc -l`

if [ $installed -eq 1 ]
then
    echo "Le paquet $1 est installe"
    exit
fi

echo "Le paquet $1 n est pas installe"

Exercice 4 : jeter.sh

L'objectif est de faire un script qui permet de mettre un fichier dans un répertoire corbeille

L'emplacement du répertoire corbeille est à votre convenance

Le script doit permettre :

  • jeter.sh -l : affiche le contenu du répertoire corbeille
  • jeter.sh -a FICHIER : déplace le FICHIER dans le répertoire corbeille
  • jeter.sh -d FICHIER : supprime définitivement le fichier de la corbeille
  • jeter.sh --flush : vide entièrement la corbeille
#!/bin/bash

if [ $# -lt 1 ]
then
    echo "Utilisation : "
    echo "jeter.sh -l : affiche le contenu du répertoire corbeille"
    echo "jeter.sh -a FICHIER : déplace le FICHIER dans le répertoire corbeille"
    echo "jeter.sh -d FICHIER : supprime définitivement le fichier de la corbeille"
    echo "jeter.sh --flush : vide entièrement la corbeille"
exit
fi

if [ ! -d "/tmp/corbeille" ]
then
    mkdir /tmp/corbeille
fi

case "$1" in
    -l)
        echo `ls -l /tmp/corbeille`
        exit
        ;;
    -a)
        if [ $# -ne 2 ]
        then
            echo "Utilisation : jeter.sh -a FICHIER"
            exit
        fi
        mv $2 /tmp/corbeille/
        echo "Le fichier $2 a été déplacé dans /tmp/corbeille"
        exit
        ;;
    -d)
        if [ $# -ne 2 ]
        then
            echo "Utilisation : jeter.sh -d FICHIER"
            exit
        fi
        if [ ! -e "/tmp/corbeille/$2" ]
        then
            echo "Le fichier $2 n existe pas dans la corbeille !"
            echo "Impossible de continuer"
            exit
        fi
        rm /tmp/corbeille/$2
        echo "Le fichier $2 a été supprimé de la corbeille"
        exit
        ;;
    --flush)
        rm /tmp/corbeille/*
        echo "La corbeille a été vidée avec succès"
        exit
        ;;
esac

echo "Le parametre $1 est inconnu"
exit