initial commit
This commit is contained in:
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#! /bin/bash
|
||||
|
||||
# 2. Créez un script nommé afficheRep qui affiche les caractèristiques et le contenu d'un répertoire dont le nom est donné en paramètre du script.
|
||||
ls -l $1
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
#! /bin/bash
|
||||
|
||||
# 3. Créez un script nommé chercheUser qui cherche un utilisateur dont le nom de connexion est donné en paramètre du script.
|
||||
|
||||
cat /etc/passwd | grep $1
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Utilisation de la commande set
|
||||
|
||||
# Première façon : set chaine_de_caracteres
|
||||
set Nom Prenom
|
||||
echo $1
|
||||
echo $2
|
||||
|
||||
#set `commande`
|
||||
set `ls -ld /etc`
|
||||
echo "Resultat : $*"
|
||||
echo "Paramètre 1 de resultat : $1"
|
||||
echo "Paramètre 2 de resultat : $2"
|
||||
echo "Paramètre 3 de resultat : $3"
|
||||
echo "Paramètre 4 de resultat : $4"
|
||||
echo "Paramètre 5 de resultat : $5"
|
||||
echo "Paramètre 6 de resultat : $6"
|
||||
echo "Paramètre 7 de resultat : $7"
|
||||
echo "Paramètre 8 de resultat : $8"
|
||||
|
||||
Horaire=$8
|
||||
|
||||
# Rôle de la variable IFS
|
||||
set $Horaire
|
||||
echo "Paramètre 1 de $Horaire est : $1"
|
||||
echo "Paramètre 2 de $Horaire est : $2"
|
||||
|
||||
# On modifie le séparateur de champs
|
||||
IFS=:
|
||||
echo "Le séparateur de paramètres est : $IFS"
|
||||
set $Horaire
|
||||
|
||||
echo "Paramètre 1 : $1"
|
||||
echo "Paramètre 2 : $2"
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
#7. Créez un script nommé infoDate qui affiche la date sous la forme : nom_du_jour-mois-annee et l'heure sous la forme suivante : heures:minutes:secondes. Chaque affichage est précédé d'un libellé de votre choix.
|
||||
#⇒ Une seule commande est utilisée pour récupérer les informations demandées.
|
||||
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 6. Créez un script nommé infoSys qui affiche les informations suivantes du système :
|
||||
|
||||
|
||||
echo "Architecture matérielle : " `uname -i`
|
||||
echo "Nom de la machine : " `uname -n`
|
||||
echo "Nom du système d'exploitation : " `uname -s`
|
||||
echo "Version du noyau : " `uname -v`
|
||||
Executable
+13
@@ -0,0 +1,13 @@
|
||||
#! /bin/bash
|
||||
|
||||
# parametres : Variables de paramètre ou de position
|
||||
|
||||
echo "Nom du script en cours d'exécution : $0"
|
||||
echo "Nombre de paramètres transmis au script : $#"
|
||||
echo "Numéro du processus du script en cours d'exécution $0 est : $$"
|
||||
|
||||
echo "Paramètre 1 du script $0 : $1"
|
||||
echo "Paramètre 2 du script $0 : $2"
|
||||
echo "Paramètre 3 du script $0 : $3"
|
||||
echo "Liste de tous les parametres du script $0 : $*"
|
||||
exit 0
|
||||
@@ -0,0 +1,3 @@
|
||||
Salut
|
||||
Ca va ?
|
||||
bloublou
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
#! /bin/bash
|
||||
|
||||
# Affiche le contenu du répertoire courant.
|
||||
# Affiche le shell de l'utilisateur.
|
||||
# Affiche le nom de la machine.
|
||||
# Définir une variable appelée os contenant le nom du système d'exploitation.
|
||||
# Définir une variable appelée ver contenant le numéro de version du système d'exploitation.
|
||||
# Afficher le contenu des deux variable os et ver.
|
||||
|
||||
echo "Mon repertoir courant : "
|
||||
ls -l
|
||||
echo "Le shell de l'utilisateur est : $SHELL"
|
||||
echo "Le nom de ma machine est : $HOSTNAME"
|
||||
os=
|
||||
ver=
|
||||
echo $os
|
||||
echo $ver
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#! /bin/bash
|
||||
|
||||
# 4. Créez un script nommé vi2 qui prend en argument un nom de fichier. Le script réalise une sauvegarde du fichier dans le répertoire /tmp avant de lancer l'éditeur de texte vi pour afficher et/ou modifier son contenu. Le fichier de sauvegarde aura comme nom nom_parametre_1.numero_processus_script_en_cours.
|
||||
|
||||
fichierAModifier=$1
|
||||
fichierSauvegarde=$1.$$
|
||||
cp $fichierAModifier /tmp/$fichierSauvegarde
|
||||
vi $fichierAModifier
|
||||
@@ -0,0 +1,2 @@
|
||||
# UTC502-26-11-24
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# TD Sauvegarde :
|
||||
|
||||
Mettre en place un système de sauvegarde simple
|
||||
Sauvegarde locale
|
||||
Nous allons maintenant voir comment mettre en place un système de sauvegarde simple locale. Pour cela, nous allons faire les choix suivants :
|
||||
utilisation de tar avec la compression bzip2 des données modifiées depuis moins de 24h ;·
|
||||
stockage sur une partition dédiée (autre que celle du système), ici hda10; ⚫ sauvegarde des dossiers/home et /etc.
|
||||
Pour cela, créez un fichier sauvegarde.sh ayant pour contenu :
|
||||
|
||||
```
|
||||
#!/bin/sh
|
||||
#Script de sauvegarde
|
||||
#Dossiers à sauvegarder
|
||||
DATA_TO_BACKUP="/home/etc"
|
||||
#Partition recevant la sauvegarde
|
||||
BACKUP_DEV=/dev/hda10
|
||||
BACKUP_DIR=/sauvegarde
|
||||
#Montage de la partition de sauvegarde
|
||||
mount -t auto $BACKUP_DEV $BACKUP_DIR
|
||||
#Définition de la date du jour afin de pouvoir récupérer #1'année ($6), le mois ($2) et le jour ($3) pour nommer le fichier de sauvegarde
|
||||
set $(date)
|
||||
ave #Sauvegarde des données
|
||||
echo "Sauvegarde de $DATA_TO_BACKUP dans $BACKUP_DIR/svg_$6$2$3.tar.bz2" tar cvjf $BACKUP_DIR/svg $6$2$3.tar.bz2 --newer-mtime '1 day ago' $DATA_TO_
|
||||
BACKUP
|
||||
```
|
||||
|
||||
Enregistrez le script dans le répertoire /usr/local/bin et rendez-le exécutable: chmod +x /usr/local/bin/sauvegarde.sh
|
||||
Pour l'utiliser, il suffira alors de saisir dans une console: sauvegarde.sh
|
||||
Sauvegarde à distance
|
||||
Nous allons maintenant reprendre l'exemple précédent avec les mêmes hypothè- ses, mais en outre nous allons envoyer le fichier de sauvegarde sur une machine distante. Nous allons utiliser deux systèmes différents : un premier avec l'utilisa- tion de ssh qui permet d'assurer un transfert sécurisé des données et un deuxième avec l'utilisation de ncftp pour envoyer l'archive sur un espace d'hébergement.
|
||||
Utiliser ssh. Si vous souhaitez et pouvez utiliser ssh avec la machine distante, le script devient donc :
|
||||
|
||||
```
|
||||
#!/bin/sh
|
||||
#Script de sauvegarde
|
||||
#Dossiers à sauvegarder DATA_TO_BACKUP="/home /etc"
|
||||
#Partition recevant la sauvegarde BACKUP_DEV=/dev/hda10
|
||||
BACKUP_DIR=/sauvegarde
|
||||
#Définition des paramètres pour l'envoi à distance
|
||||
REMOTE_USER=backup
|
||||
REMOTE_COMPUTER=ip_ordinateur
|
||||
REMOTE_DIR=/home/backup/
|
||||
#Montage de la partition de sauvegarde
|
||||
mount -t auto $BACKUP_DEV $BACKUP_DIR
|
||||
#Définition de la date du jour afin de pouvoir récupérer
|
||||
#1'année ($6), le mois ($2) et le jour ($3) pour nommer le fichier de sauvegarde
|
||||
set $(date)
|
||||
#Sauvegarde des données
|
||||
echo "Sauvegarde de $DATA_TO_BACKUP dans $BACKUP_DIR/svg $6$2$3.tar.bz2" tar cvjf $BACKUP_DIR/svg $6$2$3.tar.bz2 --newer-mtime '1 day ago $DATA_TO_
|
||||
#Envoi de la sauvegarde sur la machine distante
|
||||
BACKUP
|
||||
scp $BACKUP_DIR/svg $6$2$3.tar.bz2 $REMOTE_USER@$REMOTE_COMPUTER: $REMOTE_DIR Il ne reste alors plus qu'à saisir le mot de passe demandé, mais si l'on veut utiliser ceci automatiquement, il faudra utiliser les phrases le système de clefs publique et privée de ssh. Ainsi il ne sera plus nécessaire de saisir de mot de passe.
|
||||
```
|
||||
Binary file not shown.
Binary file not shown.
Executable
+87
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
#Script de restoration
|
||||
|
||||
#Utilisateur du serveur destinataire de la sauvegarde :
|
||||
USER_DEST="user"
|
||||
|
||||
#Serveur destinataire de la sauvegarde :
|
||||
ADDRESS_DEST="172.20.10.5" #adresse serveur distant
|
||||
|
||||
#Dossier du serveur destinataire de la sauvegarde
|
||||
BACKUP_DIR_DEST="/home/user/rep_dest/"
|
||||
|
||||
#Dossier local de la receprtion de la sauvegarder, à créer si il n'existe pas, a modifier selon l'utilisateur
|
||||
BACKUP_DIR="/home/nk/sauvegarde/"
|
||||
|
||||
SEPARATOR="--------------------"
|
||||
|
||||
#Début du script de restoration de /home
|
||||
echo $SEPARATOR
|
||||
echo "Debut du script de restauration de /home"
|
||||
echo $SEPARATOR
|
||||
|
||||
#Tableau de la liste des fichiers de sauvegardes présentent sur le serveur dans /home/user/rep_dest/
|
||||
filesList=($(ssh $USER_DEST@$ADRESS_DEST ls $BACKUP_DIR_DEST))
|
||||
|
||||
echo "Voici la liste des sauvegardes disponible sur $ADRESS_DEST dans le repertoir $BACKUP_DIR_DEST :"
|
||||
echo
|
||||
|
||||
# Boucle For afin d'afficher les fichiers avec leur position dans le tableau devant :
|
||||
for (( i=0; i<${#filesList[@]}; i++ ))
|
||||
do
|
||||
echo "$i-${filesList[$i]}" # Premier fichier
|
||||
done
|
||||
|
||||
echo
|
||||
echo $SEPARATOR
|
||||
|
||||
# Un read pour que l'utilisateur puissent entrer le numero de la sauvegarde qu'il veut
|
||||
read -r -p "Choisir l'archive à restaurer : " numSauv
|
||||
echo $SEPARATOR
|
||||
|
||||
#Place le nom de la sauvegarde voulu dans une variable OKZOU
|
||||
NAME_SAVE=${filesList[$numSauv]}
|
||||
echo "Vous avez choisi : $NAME_SAVE"
|
||||
echo $SEPARATOR
|
||||
|
||||
# Je rentre dans un boucle "infini" mais controlé par une action utilisateur.
|
||||
while true; do
|
||||
|
||||
# Un read pour que l'utilisateur puisse confirmer si oui ou non il veut restaurer
|
||||
read -r -p "Lancer la restauration ? (o/n) " response
|
||||
case "$response" in
|
||||
[oO]|[yY]|oui|yes)
|
||||
# Récupération avec le protoclole ssh (commande scp) de la sauvegarde présente sur le serveur, vers notre pc
|
||||
echo "Reception de $NAME_SAVE dans $BACKUP_DIR"
|
||||
scp $USER_DEST@$ADRESS_DEST:$BACKUP_DIR_DEST$NAME_SAVE $BACKUP_DIR
|
||||
echo $SEPARATOR
|
||||
|
||||
# Extraction de l'archive à la racine (donc /) pour recepecter la structure des répertoires d'un chemin
|
||||
echo "Extraction de la sauvegarde"
|
||||
tar xvjf $BACKUP_DIR$NAME_SAVE -C /
|
||||
echo $SEPARATOR
|
||||
|
||||
# Petit Nettoayage de la sauvegarde présent sur notre pc
|
||||
echo "Nettoayage de $NAME_SAVE"
|
||||
rm $BACKUP_DIR$NAME_SAVE
|
||||
|
||||
#Fin du script de Sauvegarde de /home
|
||||
echo $SEPARATOR
|
||||
echo "Fin du script de Restauration de /home"
|
||||
echo $SEPARATOR
|
||||
exit 0
|
||||
;;
|
||||
[nN]|non|no)
|
||||
#Fin du script de Sauvegarde de /home
|
||||
echo $SEPARATOR
|
||||
echo "Fin du script de Restauration de /home"
|
||||
echo $SEPARATOR
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Erreur, merci d'entrer o ou n"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
#Script de sauvegarde
|
||||
|
||||
#Dossier à sauvegarder, a modifier selon l'utilisateur
|
||||
DATA_TO_BACKUP="/home/nk/rep_src/"
|
||||
|
||||
#Dossier local de la création de la sauvegarder, a modifier selon l'utilisateur
|
||||
BACKUP_DIR="/home/nk/sauvegarde/"
|
||||
|
||||
#Utilisateur du serveur destinataire de la sauvegarde :
|
||||
USER_DEST="user"
|
||||
|
||||
#Serveur destinataire de la sauvegarde :
|
||||
ADDRESS_DEST="172.20.10.5" #adresse serveur distant
|
||||
|
||||
#Dossier du serveur destinataire de la sauvegarde
|
||||
BACKUP_DIR_DEST="/home/user/rep_dest/"
|
||||
|
||||
SEPARATOR="--------------------"
|
||||
|
||||
#Définition de la date du jour afin de pouvoir récupérer (a adapter)
|
||||
#l'année ($3), le mois ($1) et le jour ($2) pour nommer le fichier de sauvegarde
|
||||
IFS=/
|
||||
set $(date +%D)
|
||||
annee=$3
|
||||
mois=$1
|
||||
jour=$2
|
||||
|
||||
unset IFS
|
||||
|
||||
#Début du script de Sauvegarde de /home
|
||||
echo $SEPARATOR
|
||||
echo "Debut du script de Sauvegarde de /home"
|
||||
|
||||
#Sauvegarde des données
|
||||
echo $SEPARATOR
|
||||
echo "Sauvegarde de $DATA_TO_BACKUP dans $BACKUP_DIR/$BACKUP_FILE"
|
||||
tar cvjf $BACKUP_DIR/svg._$annee$mois$jour.tar.bz2 --newer-mtime '1 day ago' "$DATA_TO_BACKUP"
|
||||
|
||||
#Envoie vers le serveur de sauvegarde
|
||||
echo $SEPARATOR
|
||||
echo "Envoie de svg._$annee$mois$jour.tar.bz2 vers le serveur $USER_DEST@$ADRESS_DEST:$BACKUP_DIR_DEST"
|
||||
scp $BACKUP_DIR/svg._$annee$mois$jour.tar.bz2 $USER_DEST@$ADRESS_DEST:$BACKUP_DIR_DEST
|
||||
|
||||
#Verification de la bonne reception
|
||||
echo $SEPARATOR
|
||||
echo "ls -l de $USER_DEST@$ADRESS_DEST:$BACKUP_DIR_DEST pour confirmer bonne reception :"
|
||||
ssh $USER_DEST@$ADRESS_DEST ls -l $BACKUP_DIR_DEST
|
||||
|
||||
#Nettoyage de la sauvegarde local
|
||||
echo $SEPARATOR
|
||||
echo "Nettoyage de la sauvegarde local présente dans $BACKUP_DIR"
|
||||
rm -f $BACKUP_DIR/svg._$annee$mois$jour.tar.bz2
|
||||
|
||||
#Fin du script de Sauvegarde de /home
|
||||
echo $SEPARATOR
|
||||
echo "Fin du script de Sauvegarde de /home"
|
||||
echo $SEPARATOR
|
||||
Reference in New Issue
Block a user