0% ont trouvé ce document utile (0 vote)
24 vues7 pages

Shell

Le document présente des scripts pour configurer divers serveurs sur un système Linux, notamment DHCP, DNS, HTTP, SSL/TLS et FTP. Chaque section inclut un exercice avec un exemple de script pour l'installation et la configuration des services. De plus, il propose des exercices pour manipuler des fichiers texte, tels que compter les lignes, afficher le contenu, rechercher et remplacer des chaînes, et extraire des colonnes d'un fichier CSV.

Transféré par

JOËLYK
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)
24 vues7 pages

Shell

Le document présente des scripts pour configurer divers serveurs sur un système Linux, notamment DHCP, DNS, HTTP, SSL/TLS et FTP. Chaque section inclut un exercice avec un exemple de script pour l'installation et la configuration des services. De plus, il propose des exercices pour manipuler des fichiers texte, tels que compter les lignes, afficher le contenu, rechercher et remplacer des chaînes, et extraire des colonnes d'un fichier CSV.

Transféré par

JOËLYK
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

Shell

Groupe Genius répétitions

Par Mr Joël Yankam

1. Configuration d'un serveur DHCP

Exercice

Écrire un script pour installer et configurer un serveur DHCP sur un système Linux.

Exemple de script

1 #!/bin/bash

3 # Installer le serveur DHCP


4 sudo apt-get update
5 sudo apt-get install -y isc-dhcp-server

7 # Configurer le fichier de configuration DHCP


8 cat <<EOL | sudo tee /etc/dhcp/dhcpd.conf
9 subnet 192.168.1.0 netmask 255.255.255.0 {
10 range 192.168.1.10 192.168.1.50;
11 option routers 192.168.1.1;
12 option domain-name-servers 8.8.8.8, 8.8.4.4;
13 }
14 EOL

16 # Redémarrer le service DHCP


17 sudo systemctl restart isc-dhcp-server

2. Configuration d'un serveur DNS

Exercice

Écrire un script pour installer et configurer un serveur DNS avec BIND.

Exemple de script

1 #!/bin/bash

3 # Installer BIND
4 sudo apt-get update
5 sudo apt-get install -y bind9
7 # Configurer le fichier de zone DNS
8 cat <<EOL | sudo tee /etc/bind/named.conf.local
9 zone "exemple.com" {
10 type master;
11 file "/etc/bind/zones/db.exemple.com";
12 };
13 EOL

15 # Créer le fichier de zone


16 sudo mkdir -p /etc/bind/zones
17 cat <<EOL | sudo tee /etc/bind/zones/db.exemple.com
18 \$TTL 604800
19 @ IN SOA ns.exemple.com. admin.exemple.com. (
20 2 ; Serial
21 604800 ; Refresh
22 86400 ; Retry
23 2419200 ; Expire
24 604800 ) ; Negative Cache TTL
25 ;
26 @ IN NS ns.exemple.com.
27 @ IN A 192.168.1.2
28 ns IN A 192.168.1.2
29 EOL

31 # Redémarrer BIND
32 sudo systemctl restart bind9

3. Configuration d'un serveur HTTP

Exercice

Écrire un script pour installer et configurer un serveur HTTP avec Apache.

Exemple de script

1 #!/bin/bash

3 # Installer Apache
4 sudo apt-get update
5 sudo apt-get install -y apache2

7 # Activer le module SSL


8 sudo a2enmod ssl

10 # Créer un certificat auto-signé


11 sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
/etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-
selfsigned.crt
13 # Configurer Apache pour utiliser SSL
14 cat <<EOL | sudo tee /etc/apache2/sites-available/default-ssl.conf
15 <VirtualHost _default_:443>
16 ServerAdmin webmaster@localhost
17 DocumentRoot /var/www/html
18 SSLEngine on
19 SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
20 SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
21 </VirtualHost>
22 EOL

24 # Activer le site SSL et redémarrer Apache


25 sudo a2ensite default-ssl
26 sudo systemctl restart apache2

4. Configuration d'un serveur SSL/TLS

Exercice

Écrire un script pour générer des certificats SSL/TLS avec OpenSSL.

Exemple de script

1 #!/bin/bash

3 # Générer une clé privée


4 openssl genrsa -out myserver.key 2048

6 # Générer une demande de signature de certificat (CSR)


7 openssl req -new -key myserver.key -out myserver.csr

9 # Générer un certificat auto-signé


10 openssl x509 -req -days 365 -in myserver.csr -signkey myserver.key -out
myserver.crt

5. Configuration d'un serveur FTP

Exercice

Écrire un script pour installer et configurer un serveur FTP avec vsftpd.

Exemple de script

1 #!/bin/bash

3 # Installer vsftpd
4 sudo apt-get update
5 sudo apt-get install -y vsftpd

7 # Configurer vsftpd
8 cat <<EOL | sudo tee /etc/vsftpd.conf
9 listen=YES
10 anonymous_enable=NO
11 local_enable=YES
12 write_enable=YES
13 chroot_local_user=YES
14 EOL

16 # Redémarrer le service vsftpd


17 sudo systemctl restart vsftpd

Parcours de Fichier

Exercice 1 : Compter le nombre de lignes dans un fichier

Énoncé

Écrire un script qui prend en argument un fichier texte et affiche le nombre de lignes qu'il
contient.

Solution

1 #!/bin/bash

3 # Vérifier si un fichier est fourni en argument


4 if [ $# -eq 0 ]; then
5 echo "Veuillez fournir un nom de fichier."
6 exit 1
7 fi

9 # Vérifier si le fichier existe


10 if [ ! -f "$1" ]; then
11 echo "Le fichier $1 n'existe pas."
12 exit 1
13 fi

15 # Compter et afficher le nombre de lignes


16 line_count=$(wc -l < "$1")
17 echo "Le fichier $1 contient $line_count lignes."

Utilisation

Enregistrez le script sous le nom count_lines.sh , puis exécutez-le avec un fichier texte
en argument :
1 bash count_lines.sh mon_fichier.txt

Exercice 2 : Afficher le contenu d'un fichier

Énoncé

Écrire un script qui affiche le contenu d'un fichier ligne par ligne.

Solution

1 #!/bin/bash

3 # Vérifier si un fichier est fourni en argument


4 if [ $# -eq 0 ]; then
5 echo "Veuillez fournir un nom de fichier."
6 exit 1
7 fi

9 # Vérifier si le fichier existe


10 if [ ! -f "$1" ]; then
11 echo "Le fichier $1 n'existe pas."
12 exit 1
13 fi

15 # Afficher le contenu du fichier


16 while IFS= read -r line; do
17 echo "$line"
18 done < "$1"

Utilisation

Enregistrez le script sous le nom display_file.sh , puis exécutez-le avec un fichier texte
en argument :

1 bash display_file.sh mon_fichier.txt

Exercice 3 : Rechercher une chaîne dans un fichier

Énoncé

Écrire un script qui prend en argument un fichier et une chaîne, puis affiche toutes les lignes
contenant cette chaîne.

Solution
1 #!/bin/bash

3 # Vérifier si un fichier et une chaîne sont fournis


4 if [ $# -ne 2 ]; then
5 echo "Usage : $0 <fichier> <chaîne>"
6 exit 1
7 fi

9 # Vérifier si le fichier existe


10 if [ ! -f "$1" ]; then
11 echo "Le fichier $1 n'existe pas."
12 exit 1
13 fi

15 # Rechercher et afficher les lignes contenant la chaîne


16 grep "$2" "$1"

Utilisation

Enregistrez le script sous le nom search_in_file.sh , puis exécutez-le avec un fichier et


une chaîne en arguments :

1 bash search_in_file.sh mon_fichier.txt "ma_chaine"

Exercice 4 : Remplacer une chaîne dans un fichier

Énoncé

Écrire un script qui remplace toutes les occurrences d'une chaîne par une autre dans un
fichier.

Solution

1 #!/bin/bash

3 # Vérifier si un fichier et deux chaînes sont fournis


4 if [ $# -ne 3 ]; then
5 echo "Usage : $0 <fichier> <ancienne_chaine> <nouvelle_chaine>"
6 exit 1
7 fi

9 # Vérifier si le fichier existe


10 if [ ! -f "$1" ]; then
11 echo "Le fichier $1 n'existe pas."
12 exit 1
13 fi

15 # Remplacer l'ancienne chaîne par la nouvelle


16 sed -i "s/$2/$3/g" "$1"
17 echo "Les occurrences de '$2' ont été remplacées par '$3' dans $1."

Utilisation

Enregistrez le script sous le nom replace_in_file.sh , puis exécutez-le avec un fichier et


deux chaînes en arguments :

1 bash replace_in_file.sh mon_fichier.txt "ancienne_chaine" "nouvelle_chaine"

Exercice 5 : Extraire des colonnes d'un fichier CSV

Énoncé

Écrire un script qui extrait une colonne spécifique d'un fichier CSV.

Solution

1 #!/bin/bash

3 # Vérifier si un fichier et un numéro de colonne sont fournis


4 if [ $# -ne 2 ]; then
5 echo "Usage : $0 <fichier_csv> <numéro_colonne>"
6 exit 1
7 fi

9 # Vérifier si le fichier existe


10 if [ ! -f "$1" ]; then
11 echo "Le fichier $1 n'existe pas."
12 exit 1
13 fi

15 # Extraire la colonne spécifiée


16 cut -d',' -f"$2" "$1"

Utilisation

Enregistrez le script sous le nom extract_column.sh , puis exécutez-le avec un fichier


CSV et un numéro de colonne en arguments :

1 bash extract_column.sh mon_fichier.csv 2

Vous aimerez peut-être aussi