Professional Documents
Culture Documents
Projet 1 Cherradi
Projet 1 Cherradi
Rapport de Projets
Première Année Ingénierie des données
Réalisé par :
- Oussama EL ALAOUI EL ISMAILI
- AMINE EL-MOUSSAOUI
2
I- Automatiser la création d’un fichier
1. L’idée de l’encadrant :
Le projet est basé sur une génération automatique des fichiers texte dont le nom est sous la
forme : ‘’la date et l’heure de sauvegarde’’.txt, ce fichier est contenu dans un répertoire sous la
forme ‘’la date de création’’. Chaque fichier contient deux éléments essentiels sont :
Le projet est une simulation très basique de la sauvegarde automatique des bases de données ce
projet est en cours d’amélioration le long du semestre.
3
2. Les outils utilisés :
2-1 Vim :
Vim est un éditeur de texte modal gratuit et open-source. Il est disponible
pour de nombreux systèmes d'exploitation différents et peut être utilisé pour éditer
tous types de fichiers texte. Vim est connu pour ses fonctionnalités d'édition
puissantes et sa personnalisation approfondie, ce qui en fait un choix populaire
pour les développeurs, les administrateurs système et les utilisateurs avancés.
2-2 Cron :
Cron est un programme qui permet d'automatiser des tâches sur les
systèmes d'exploitation Unix, Linux et MacOs. Il permet d'exécuter des scripts,
des commandes ou des logiciels à une date et une heure spécifiée à l'avance,
ou selon un cycle défini à l'avance.
Pour créer une tâche cron, il faut éditer le fichier crontab de l'utilisateur ou
du groupe concerné. Ce fichier est un simple fichier texte qui contient une liste
de tâches, chacune décrite par une ligne.
Par exemple :
4
Figure 2 : le fichier Crontab
Les scripts Shell peuvent être utilisés pour automatiser une grande
variété de tâches. Par exemple, vous pouvez utiliser des scripts Shell pour :
Les scripts Shell sont un outil très puissant qui peut vous aider à gagner
du temps et à automatiser vos tâches quotidiennes.
5
Figure 2 : Script Shell
3. La démarche du projet :
6
Oussama@ubunto:~/script$ vim script_1.sh
7
On commence par définir par quel interpréteur de commande ce script
doit être exécuter. On veut l’exécuter en utilisant Bash (Born Again
Shell) il se fait par écrire # ! suivi par le chemin de Bash # !/bin/bash
8
Pour le contenu du ficher on veut écrire le nom de l’utilisateur et le nom
de l’host on peut les stocker dans deux variables username=$(whoami)
hostname=$(hostname)
9
Enfin il faut remplir le fichier par le nom de l’utilisateur et le nom de
l’host en utilise la commande echo sous la forme même si le fichier
n’existait pas la commande echo va le créer :
Pour enregistrer le script dans Vim nous avons appuyé sur Echap sur le
clavier pour quitter le mode d’insertion et puis nous avons tapé :wq pour
enregistrer et quitter et finalement appuyer sur entrer.
Maintenant nous devons changer les accès du fichier pour qu’il peut
être exécuter. Ce changement est fait par la commande chmod :
Oussama@ubunto:~/script$ chmod u+x script.sh
10
3-2 La configuration du Cron :
Comme déjà dit la configuration de Cron se fait par éditer le fichier
Crontab. Pour éditer le fichier Crontab par Vim nous avez utilisé la
commande suivante :
Oussama@ubunto:~/script$ crontab -e
11
fichier crontab pour exécuter la commande chaque minute cela par
ajouter le champs * * * * *. Puis nous avons ajouté la commande pour
exécuter le fichier script que nous avons déjà créer, pour l’exécuter il
suffit d’écrire son chemin dans notre cas c’est :
/home/oussama/script/script_1.sh
12
4. Tester le projet :
Premièrement nous avons accédé au répertoire où nous avons
enregistré les répertoires avec les noms des dates dans ce cas c’est
~/sauvegarde et on affiche son contenu par la commande ls
On trouve plusieurs fichiers des jours de 25-10 jusqu’à 28-10 nous avons
accédé à un de ces fichiers par exemple 2023-10-26 et nous avons afficher son
contenu
13
Nous avons remarqué que plusieurs fichiers sont créé entre 00:25 et 01:00
chaque minutes nous avons accédé à plusieurs fichiers parmi de ces fichiers et
on affiche son contenu par la commande cat.
Nous avons remarqué que les fichiers sont créé comme il faut maintenant nous
avons changé le fichier Crontab pour exécuter le script chaque jour à 00:00.
14
II- Automatiser la création d’un fichier
1. L’idée de l’encadrant :
Objectif du projet :
Permettre à l'utilisateur d'écrire dans un fichier texte.
Contrôler le nombre de caractères, de lignes et de mots du fichier.
Limiter le nombre de caractères, de lignes et de mots du fichier à 300, 150 et 10,
respectivement.
Explication :
Le projet consiste à créer un script qui permet à l'utilisateur d'écrire dans
un fichier texte. L'outil doit également contrôler le nombre de caractères, de lignes
et de mots du fichier. Le nombre de caractères, de lignes et de mots du fichier doit
être limité à 300, 150 et 10, respectivement.
Exemple :
Si l'utilisateur écrit 500 caractères dans le fichier, l'outil doit tronquer le
fichier à 300 caractères. Si l'utilisateur écrit 200 lignes dans le fichier, l'outil doit
supprimer les 100 dernières lignes. Si l'utilisateur écrit 250 mots dans le fichier,
l'outil doit conserver les 150 premiers mots.
#!/bin/bash
answer="yes"
while [ $answer = "yes" ]; do
var=1
max=150
max_words=150
max_char=300
max_lines=10
vim file.txt
if [ $(wc -c < file.txt) -gt $max_char ]; then
truncate -s $max_char file.txt
fi
if [ $(wc -l < file.txt) -gt $max_lines ]; then
sed -i "$(($max_lines+1)),$ d" file.txt
else
Ecole Nationale des Sciences Appliquées d’Al-Hoceima
15
max_lines=$(wc -l < file.txt)
fi
if [ $(wc -w < file.txt) -gt $max_words ]; then
touch new_file.txt
truncate -s 0 new_file.txt
while [ $var -lt $(($max_lines + 1)) ]; do
cat file.txt | sed -n "$var p" | cut -d " " -f 1-$max_words >>
new_file.txt
if [ $(wc -w < new_file.txt) -lt $max ]; then
max_words=$(($max - $(wc -w < new_file.txt)))
fi
if [ $(wc -w < new_file.txt) -eq $max ]; then
break
fi
((var++))
done
rm file.txt
mv new_file.txt file.txt
fi
echo "The file has been edited to the following specifications(300
char/150 words/10 lines):"
echo "_________________________________"
cat file.txt
echo "---------------------------------"
echo "Do you want to edit the file more? (yes/no)"
read answer
done
16
Truncate est une commande qui limite le nombre d’octets d’un
fichier dans le cas d’un fichier qui est constitué des charactères et
chaque charactère est représenté dans un octet alors il va limiter le
nombre charactères dans un fichier.
2.4 Script Shell : (déjà définie)
2.5 Vim editor : (déjà définie)
3. La démarche du projet :
Cette ligne est le Shebang il montre qu’il s’agit d’une bash script
La troisième ligne démarre une boucle while qui continuera à s'exécuter tant
que la variable answer est égale à "yes".
Ici en initialise la variable var à la valeur 1. Cette variable sera utilisée pour
parcourir les lignes du fichier dans la boucle while ci-dessous.
max=150
max_words=150
max_char=300
max_lines=10
Ecole Nationale des Sciences Appliquées d’Al-Hoceima
17
Ces lignes initialisent les variables max, max_words, max_char et max_lines
aux valeurs souhaitées :
max c’est le nombre maximal des mots qu’on veut extraire de tous le fichier
max_words c’est le nombre maximal des mots qu’on veut extraire d’une ligne
max_char c’est le nombre maximal des caractères qu’on veut conserver
max_lines c’est le nombre maximal de lignes qu’on veut conserver
Ici on vérifie le nombre de lignes dans ce fichier s’il dépasse 10 lignes on édite
le fichier en laissant seulement les 10 premiers lignes en utilisant la commande
sed. La commande sed ici supprime toutes les lignes entre la 11 ème ligne et la
dernière ligne ($ représente la dernière ligne dans la syntaxe de sed)
S’il ne dépasse pas le nombre de lignes on affecte le nombre de lignes de
fichier file.txt au variables max_lines cela va être utilisé pour basculer toutes
les lignes pour limiter le nombre de lignes.
18
max_words=$(($max - $(wc -w < new_file.txt)))
fi
if [ $(wc -w < new_file.txt) -eq $max ]; then
break
fi
((var++))
done
Ici on a une boucle while qui va aller de 1 jusqu’au nombre de lignes du fichier
c’est pour cela on a modifié la variable max_lines.
cat file.txt | sed -n “$var p” | cut -d “ “ -f 1-$max_words >> new_file.txt
cat file.txt passe le contenu du texte à la commande sed, le rôle de cette
dernière est de sélectionner la ligne correspond à la variable var par exemple
si var=1 (La première valeur de var dans la boucle while) ici la commande
sed va sélectionner la première ligne et la passer à la commande cut.
Passant à la commande cut, comme déjà dit la commande cut permet
d’extraire des sections spécifiques ça c’est à l’aide de l’option -d qui permet
de déterminer le délimiteur entre les sections que je veux extraire dans ce cas
je veux extraire les mots et pour cela j’ai déterminé le délimiteur autant
qu’espace ’’ ’’. L’option -f c’est lui qui permet d’extraire les sections et prends
comme arguments le nombre de sections à extraire dans ce cas 1-
$max_words enfin on affecte les mots extraits dans le fichier temporaire
new_file.txt.
((var++))
Done
19
((var++)) incrémente la variable var pour passer à la ligne suivante.
rm file.txt
mv new_file.txt file.txt
echo "The file has been edited to the following specifications(300 char/150
words/10 lines):"
echo "_________________________________"
cat file.txt
echo "---------------------------------"
echo "Do you want to edit the file more? (yes/no)"
read answer
done
4. Tester le projet :
Pour tester le projet je vais modifier les critères, on va tester
le script pout limiter le fichier dans 30 caractères, 10 mots et
10 lignes.
20
On commence par tester le nombre des caractères on tape
plusieurs ‘’1’’
21
On entre ‘’yes’’ pour éditer le fichier plus
Pour tester les mots on écrit des nombres successifs
dans plusieurs lignes.
22
On remarque que les nombres de 11 jusqu’à 14 sont supprimé
il a conservé seulement 10 mots.
23
On tape ‘’no’’ on remarque que le programme est terminé.
24