0% ont trouvé ce document utile (0 vote)
146 vues6 pages

Scripts Shell et Gestion de Fichiers

Ce document contient plusieurs scripts shell avec des exemples de fonctionnalités shell comme les arguments, les boucles, la vérification d'existence de fichiers ou répertoires, la génération de nombres aléatoires et plus encore. Le document présente également un menu interactif shell.

Transféré par

Malki Ahmed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
146 vues6 pages

Scripts Shell et Gestion de Fichiers

Ce document contient plusieurs scripts shell avec des exemples de fonctionnalités shell comme les arguments, les boucles, la vérification d'existence de fichiers ou répertoires, la génération de nombres aléatoires et plus encore. Le document présente également un menu interactif shell.

Transféré par

Malki Ahmed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

EI shell notes

Requirements

##!/bin/bash
#Name : Brhili ahmed
#Date: 06/03/2023
#Objet/sujet : [subject]

$1 -> premier arguments


$# -> le nombre total d'arguments
_________________________________
$* -> liste des arguments
echo "Les arguments sont : $*"
#shell
$ ./test.sh foo bar baz
Les arguments sont : foo bar baz

Faire un menu

##!/bin/bash
#Name : Brhili ahmed
#Date: 22/02/2022
#Objet/sujet : User Existence

if [ -z "$1" ]; then
echo "Veuillez spécifier un utilisateur."
exit 1
fi

## verifier si un utilisateur existe


if id "$1" >/dev/null 2>&1; then
echo "L'utilisateur $1 existe."
echo "Bonjour, $1 ! Veuillez choisir un nombre:"
echo "1. Option 1"
echo "2. Option 2"
echo "3. Option 3"
echo "4. Quitter"
read -p "Votre choix: " choice

case $choice in
1) echo "Vous avez choisi l'option 1.";;
2) echo "Vous avez choisi l'option 2.";;
3) echo "Vous avez choisi l'option 3.";;
4) echo "Bye"; exit;;
*) echo "Choix non valide. Veuillez réessayer."; exit;;
esac
else
echo "L'utilisateur $1 n'existe pas."
exit 1
fi

jeu PlusGrandPlusPetit joueur

##!/bin/bash
#Name : Brhili ahmed
#Date: 22/02/2022
#Objet/sujet : jeu du plus petit, plus grand,

# Fonction pour générer un nombre aléatoire entre 1 et 100


generate_random_number() {
echo $((1 + RANDOM % 100))
}

# Initialisation du meilleur joueur


best_player=""
best_score=0

# Demande le nom du joueur


read -p "Entrez votre nom: " player_name

# Début du jeu
echo "Bienvenue au jeu du plus petit, plus grand, $player_name !"
echo "Le but du jeu est de deviner un nombre compris entre 1 et 100 en moins de 10 tentatives."

# Génère le nombre aléatoire


secret_number=$(generate_random_number)

# Boucle de jeu
for i in {1..10}; do

EI shell notes 1
read -p "Tentative #$i: Entrez un nombre entre 1 et 100: " guess

# Vérifie si le nombre est valide


if ! [[ "$guess" =~ ^[0-9]+$ ]] || ((guess < 1)) || ((guess > 100)); then
echo "Erreur: Entrez un nombre entre 1 et 100."
continue
fi

# Vérifie si le nombre est correct


if ((guess == secret_number)); then
echo "Félicitations $player_name, vous avez trouvé le nombre mystère en $i tentatives !"

# Vérifie si le joueur a battu le record


if ((best_score == 0)) || ((i < best_score)); then
best_player=$player_name
best_score=$i
echo "Bravo $player_name, vous avez battu le record !"
fi

# Sortie de la boucle
break
elif ((guess < secret_number)); then
echo "Le nombre est plus grand."
else
echo "Le nombre est plus petit."
fi
done

# Affiche le meilleur joueur


if [[ "$best_player" != "" ]]; then
echo "Le meilleur joueur est $best_player avec un score de $best_score."
fi

Trouver quel fichier se situe la chaine de caractère _XOPEN

grep -rnw /usr/include -e "_XOPEN_SOURCE"

script shell qui vérifie que les 4 paramètres -a , -b , -c et -d sont passés en argument et qui exécute une action spécifique en fonction de
chacun de ces paramètres

#!/bin/bash
if [ $# -ne 4 ]; then
echo -e "\e[31mErreur : Ce script doit être appelé avec exactement 4 paramètres (-a, -b, -c, -d)\e[0m"
exit 1
fi

if [ "$1" == "-a" ]; then


echo "Paramètre -a : $2"
fi

if [ "$3" == "-b" ]; then


echo "Paramètre -b : $4"
fi

if [ "$1" == "-c" ]; then


echo "Paramètre -c : $2"
fi

if [ "$3" == "-d" ]; then


echo "Paramètre -d : $4"
fi

Menu shell : /etc/services

afficher les services tcp et leur nombre

recherchez un service par son nom

affichez les mots non attribué jusq'a 1000

#!/bin/bash

# Affiche le nombre de services TCP


function nb_services_tcp() {
nb_tcp=$(grep '/tcp' /etc/services | wc -l)
echo "Nombre de services TCP : $nb_tcp"
}

# Recherche un service par son nom


function recherche_service() {
read -p "Entrez le nom du service à rechercher : " service
result=$(grep "$service" /etc/services)
if [[ -n "$result" ]]; then
echo "$result"
else

EI shell notes 2
echo "Le service $service n'a pas été trouvé."
fi
}

# Affiche les mots non attribués jusqu'à 1000


function mots_non_attribues() {
for i in {0..1000}; do
result=$(grep -w "$i/tcp" /etc/services)
if [[ -z "$result" ]]; then
echo "$i/tcp"
fi
done
}

# Menu principal
while true; do
echo "Menu principal :"
echo "1. Afficher le nombre de services TCP"
echo "2. Rechercher un service par son nom"
echo "3. Afficher les mots non attribués jusqu'à 1000"
echo "4. Quitter"
read -p "Entrez votre choix : " choix
case $choix in
1)
nb_services_tcp
;;
2)
recherche_service
;;
3)
mots_non_attribues
;;
4)
echo "Au revoir !"
exit 0
;;
*)
echo "Choix invalide. Veuillez réessayer."
;;
esac
done

verify if a file exists in shell

if [ -f "/path/to/file" ]; then
echo "File exists"
else
echo "File does not exist"
fi
or

if [ -e "/path/to/file" ]; then
echo "File or directory exists"
else
echo "File or directory does not exist"
fi

Boucle while in shell

a=0

while [ $a -lt $1 ]
do
echo $a
a=`expr $a + 1`

done

Boucle for in shell

for i in $( seq 100 )


do
echo $i
done

or

for variable_name in [list]


do
# code to be executed for each item in the list
done
#This loop will print the names of three files, one on each line.

for file in file1.txt file2.txt file3.txt


do
echo $file
done
_____________________________

EI shell notes 3
files=$(ls *.txt)
for file in $files
do
echo $file
done

Verifier la taille d’un fichier

du -h mon_fichier.txt

creer multiple files at once

touch text_{1..10}.txt

Undelete

verifie la presence de l'argument dans un fichier

#Check l'existence de l'argument


if [ -z "$1" ]
then
echo "l'argument n'est pas fourni";
fi
# (-z test si la chaîne de caractères est vide)

Verifie si le fichier exist

## verifier que le fichier existe


if [ -f $1 ]; then
echo "file exist"
else
echo "file not exist"
exit
fi

Verifier la presence d’un repertoire (sinon creer le )

## verifier que la poubelle (folder) existe


if [ ! -d poubelle ]; then
mkdir poubelle

else
echo "folder exist"
fi

## verifier que la poubelle (folder) existe


if [ ! -d poubelle ]; then
mkdir poubelle

else
echo "folder exist"
fi

#### Si la poubelle ontien t + 100 fichiers , videz le


nb=`ls | wc -l`
# dir_home= `pwd`

if [ $nb -gt 100 ]; then


echo "Warning: The trash contains more than 100 files. Empty the trash? (y/n)"
read choice

if [ "$choice" = "y" ]; then


rm -v /home/madripped/poubelle/*
else
echo "folder dosen't contains more than 100 files"
exit 0
fi
else
echo "folder dosen't contains more than 100 files"
fi

EI shell notes 4
# Vérifier que le fichier n'existe pas déjà dans la poubelle

if [ -f "$POUBELLE/$1" ]; then
read -p "Le fichier existe déjà dans la poubelle. Voulez-vous le remplacer ? (o/n)" choix
if [ "$choix" == "o" ]; then
rm -f "$POUBELLE/$1"
else
echo "Suppression annulée"
exit 1
fi
fi

Pour gérer un fichier log de toute activité,

echo "Mon message de log" >> mon_script.log

7°) Reprenez la question 4, ajouter une autre condition de vidage de la


poubelle. La poubelle ne doit pas contenir plus de 100 fichiers ET la taille
ne pas dépasser 4 MO.

nb=`ls | wc -l`
size=`du -sm | awk '{print $1}'`

if [ $nb -gt 100 ] || [ $size -gt 4 ]; then


echo "Warning: The trash contains more than 100 files. Empty the trash? (y/n)"
read choice

if [ "$choice" = "y" ]; then


rm -v /home/madripped/poubelle/*
else
echo "folder dosen't contains more than 100 files"
exit 0
fi
else
echo "folder dosen't contains more than 100 files"
fi

#Ce code utilise la commande du pour obtenir la taille de la poubelle en mégaoctets (Mo) et la commande awk pour extraire la première colonne contena

8°) Au lieu de coder en dur dans le script les paramètres de vidage de la


poubelle, mettre ces deux paramètres dans un fichier afin de pouvoir
modifier les caractéristiques de la poubelle sans modifier le script.
Voici comment modifier le script pour utiliser un fichier de configuration externe pour les paramètres de vidage de la poubelle :

1. Créez un fichier nommé "trash_config" dans le même répertoire que le script.

2. Ajoutez les deux paramètres de vidage de la poubelle (nombre maximal de fichiers et taille maximale en Mo) dans le fichier
"trash_config" en utilisant le format suivant:

max_files=100
max_size=4

1. Modifiez le script pour lire ces paramètres à partir du fichier de configuration. Voici le code modifié :

#!/bin/bash

# Lire les paramètres de configuration de la poubelle à partir du fichier trash_config


source ./trash_config

# Obtenir le nombre de fichiers et la taille de la poubelle


nb=`ls | wc -l`
size=$(du -sm /home/madripped/poubelle | awk '{print $1}')

# Vérifier si la poubelle contient plus de $max_files fichiers ou si sa taille dépasse $max_size Mo


if [ $nb -gt $max_files ] || [ $size -gt $max_size ]; then
echo "Attention: la poubelle contient plus de $max_files fichiers ou sa taille dépasse $max_size Mo. Vider la poubelle ? (o/n)"
read choice

if [ "$choice" = "o" ]; then


rm -v /home/madripped/poubelle/*
echo "La poubelle a été vidée."
else
echo "La poubelle n'a pas été vidée."
fi
else
echo "La poubelle ne contient pas plus de $max_files fichiers et sa taille ne dépasse pas $max_size Mo."
fi

EI shell notes 5
exit 0

Ce code utilise la commande source pour inclure le fichier "trash_config" dans le script et lire les valeurs de paramètres de la poubelle. Les
variables max_files et max_size sont ensuite utilisées dans la condition pour vérifier si la poubelle doit être vidée.
Notez que j'ai également modifié la commande du pour spécifier le répertoire de la poubelle ( /home/madripped/poubelle ) pour obtenir la taille
correcte de la poubelle. Cela permet de modifier les caractéristiques de la poubelle en modifiant simplement le fichier "trash_config" sans
avoir à modifier le script lui-même.

faire un menu

while true
do
read a
case $a in
1) echo "a=1";;
2) echo "a=2";;
*) echo "autre cas";;
esac
done

lister tous les fichiers modifiés au cours des 7 derniers jours dans le répertoire courant

find . -mtime -7 -type f

# partage fichier command


sudo mount -t cifs //192.168.1.100/share /mnt/share -o username=myuser,password=mypassword,domain=mydomain

You can read more - gt -eq by typing man test

man test

créer une archive en shell,

tar -cvzf EI_1.tar.gz scriptsh/

exctraction

tar -xvf archive.tar.gz

EI shell notes 6

Vous aimerez peut-être aussi