0% ont trouvé ce document utile (0 vote)
4 vues647 pages

Cours Linux Full

Le document traite des tâches et responsabilités d'un administrateur système GNU/Linux, incluant l'installation, la supervision, le support et la mise à jour des systèmes. Il aborde également des concepts tels que les types de fichiers, la configuration réseau, ainsi que des exercices pratiques pour renforcer les compétences en administration système. Enfin, il présente des évaluations sur divers aspects techniques liés à Linux et à la gestion des utilisateurs.

Transféré par

layesouf
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)
4 vues647 pages

Cours Linux Full

Le document traite des tâches et responsabilités d'un administrateur système GNU/Linux, incluant l'installation, la supervision, le support et la mise à jour des systèmes. Il aborde également des concepts tels que les types de fichiers, la configuration réseau, ainsi que des exercices pratiques pour renforcer les compétences en administration système. Enfin, il présente des évaluations sur divers aspects techniques liés à Linux et à la gestion des utilisateurs.

Transféré par

layesouf
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

Administration système GNU/LINUX

M. Traoré Sékou Fanta Mady


Consultant Infra IT
Tel: 76 29 91 22
Tâches de l'administrateur systèmes

 l'installation et la  la supervision ;
désinstallation ;  le conseil ;
 le paramétrage ;  le support ;
 le maintient ;  la veille technologique dans le
 la mise à jour ; périmètre technique des matériels
 l'évolution ; et logiciels
 la sauvegarde ;
 la restauration ;
 la planification ;
Mise en place environnement Lab
Concept Raid
EVALUATION DU JOUR
1. Unix & Linux date de quelle année?
2. IL y a combien de type de distribution GNU/linux, deux exemples de
chaque type,
3. avantage et inconvénient des RAID0, 1, 3, 4 et 5
4. la partition swap sert à quoi?
5. Une suscription redhat sert à quoi?
EVALUATION DU JOUR
1. Le prompt est composé de quoi et quoi?
2. Quelle commande permet d’afficher le contenu du répertoire /home,
3. Quelle est la capacité totale en stockage d’un serveur de 4 disque ayant
chacun 200 GB en Raid0?
4. Quelle est la capacité totale en stockage d’un serveur de 4 disque ayant
chacun 200 GB en Raid1?
5. Quelle commande permet de supprimer un répertoire vide?
VI
EVALUATION DU JOUR
1) Citez trois types de Shell,
2) Quel fichier contient l'historique des commandes?
3)Quelle commande permet d'afficher les fichiers donc le termine par .txt?
4)la commande grep -v "bad" [Link] fait quoi?
5) La coammnde pour afficher les 3 premières lignes du fichier [Link]?
Création en masse d’utilisateurs
TD
1) La commande pour créer le répertoire /data,
2) La commande pour afficher votre dossier actuel?
3) La commande pour se positionner dans /data,
4) La commande pour créer un fichier [Link]
5) La commande pour créer un fichier [Link] ayant comme contenu le contenu de /?
6) En utilisant vi sauvegarder copier [Link] dans [Link],
7) En utilisant vi créer un fichier [Link] et insérer le nom et prénom de trois de vos camarades,
8) Ajouter un utilisateur ayant comma login [Link],
9) Il y a-t-il une ligne associée dans le fichier /etc/passwd?
10)Attribuer un mot de passe au compte créer en 8,
11)Créer un groupe 3ISR,
12)Ajouter le compte créer en 8 dans ce groupe.
13)Vérifier l’existence d’une ligne dans /etc/group pour ce compte,
14)Quel est l’UID du compte crée en 8?
15)Le GID du group 3ISR?
16)Quelle commande permet d’expirer le password du compte créer en 8?
17)Le compte créer en 8 appartient à combien de groupe?
18)renommer le compte créer en 8 en [Link] puis supprimer
19)Renommer le groupe 3ISR en SUP3,
20)Supprimer le groupe SUP3.
EVALUATION DU JOUR
1) Citez trois méthodes pour obtenir de l’aide sur une commande,
2)Le fichier /etc/passwd sert à quoi?
3)Le nombre et les champs du fichier /etc/passwd?
4)Le fichier /etc/shadow contient quoi?
5) Trois caractéristiques d’une salle serveur?
Mount,
blkid
TD
1) Ajouter un disque de 10 GB à votre VM,
2) Partitionner le disque en utilisant FDISK (deux partitions primaires et une étendue)?
3) Créer deux partitions logiques dans la partition étendue ,
4) Créer quatre points de montage /pm1, /pm2, /pm3 et /pm4,
5) Attribuer ext3 comme système de fichier aux quatre partition,
6) Monter manuellement les quatre partitions dans les 4 point de montage,
7) Vérifier que les partitions sont bien montées,
8) Redémarrer votre VM,
9) Les partitions sont toujours montées?
10)Comment faire pour monter durablement les partitions?
11)tester,
12)Comment faire pourque /pm1 soit le répertoire par défaut des utilisateurs?
13)Tester?
14)Comment faire pourque les dossiers Bureau et Document soient créer automatiquement dans le répertoire
de travail des utilisateurs,
15)Quelle est la commande pour créer un utilisateur testsup2 avec comme répertoire de travail /pm2?
16)Comment faire pour exiger un mot de passe de 10 caractères avec une lettre majuscule et un chiffre?
17)Tester,
18)Basculer en testsup2 et essayer de créer un compte testsup, cela marche?
19)Donner le droit administrateur à testsup2,
20)Essayer de créer un compte testsup, cela marche?
EVALUATION DU JOUR
1) Le fichier /etc/security/[Link] sert à
quoi?
2)Le fichier /etc/default/useradd sert à quoi?
3)La différence entre partition étendue et primaire?
4)Deux caractéristiques d’un système de fichier?
5) Citez trois systèmes de fichier sous GNU/linux?
Chemin absolu et relatif
Les divers types de fichiers:
On distingue trois types de fichiers : ordinaires, catalogue, spéciaux.
a. Les fichiers ordinaires ou réguliers
Les fichiers ordinaires sont aussi appelés fichiers réguliers, ordinary files ou regular files. Ce sont des fichiers tout à fait
classiques qui contiennent des données. Par données, comprenez n’importe quel contenu :
• texte
. image
. audio
. programme binaire compilé
. script
. base de données
. bibliothèque de programmation
• etc.
b. Les catalogues:
Les fichiers catalogues sont les répertoires, dossiers ou directory. Les répertoires permettent d’organiser le disque dur
en créant une hiérarchie. Un répertoire peut contenir des fichiers normaux, des fichiers spéciaux et d’autres
répertoires, de manière récursive. Un répertoire n’est rien d’autre qu’un fichier particulier contenant la liste des fichiers
eux-mêmes présents dans ce répertoire. Cette notion se révélera très utile lorsque la question des droits sera abordée.
c. Les fichiers spéciaux :
Le troisième type de fichier est le fichier spécial.
Il existe plusieurs genres de fichiers spéciaux.
Ils se trouvent principalement dans le répertoire /dev s’ils représentent des périphériques.
Ce sont principalement des fichiers servant d’interface pour les divers périphériques.
Ils peuvent s’utiliser, suivant le cas, comme des fichiers normaux. Un accès en lecture ou écriture sur ces fichiers est
directement redirigé vers le périphérique (en passant par le pilote associé s’il existe).

Par exemple si vous redirigez un fichier d’onde sonore (wave) vers le fichier représentant la sortie de la carte son, il y
a de fortes chances que ce son soit audible par vos haut-parleurs.
3. Nomenclature des fichiers:
On ne peut pas donner n’importe quel nom à un fichier, il faut pour cela suivre quelques règles simples.
Ces règles sont valables pour tous les types de fichiers.

Sur les anciens systèmes Unix un nom de fichier ne pouvait pas dépasser 14 caractères.
Sur les systèmes actuels, dont Linux, on peut aller jusqu’à 255 caractères.

L’éventuelle extension est comprise dans la longueur du nom du fichier.


Un point extrêmement important : Linux fait la distinction entre les noms de fichiers en minuscules et en majuscules.
Toto, TOTO, ToTo et toto sont des noms de fichiers différents, avec un contenu différent.

La plupart des caractères (les chiffres, les lettres, les majuscules, les minuscules, certains signes, les caractères accentués)
sont acceptés, y compris l’espace.
Cependant quelques caractères sont à éviter car ils ont une signification particulière au sein du shell : & ( ) ~ \ / | ` ? - (en
début de nom).

Les noms suivants sont valides :


• Fichier1
• [Link]
• [Link]
• Paie_juin_2002.xls
•8
Ces noms peuvent poser des problèmes :
• Fichier*
• Paie(decembre)
• Ben&Nuts
• Paie juin [Link]
• -f
EVALUATION DU JOUR
1) Quelle commande permet de verifier un ext4 et un
xfs?
2) C'est quoi le FHS?
3)/etc & /boot contient quoi?
4) La différence entre chemin abdolu et relatif?
5//etc/fstab sert à quoi? il a combien de champ?
EVALUATION DU JOUR
1) Sous Linux un fichier est attribué à qui et qui?
2)quelle commande permet de faire de [Link] le fichier
de user1 et du groupe 3isr?
3)Quelle commande permet de modifier la propriété du
groupe d’un fichier?
4)quels sont les droits possibles d'un propriétaire sur un
fichier sous GNU/linux?
5) la commande chmod 754 [Link] fais quoi?
TD
1) Créer un fichier [Link] ayant comme contenu : echo ‘ bonjour 3isr ’,
2) Donner la lecture et l’écriture à tout monde sur ce fichier,
3) Tester,
4) Le fichier est-il exécutable?
5) Donner le droit d’exécution au fichier [Link],
6) Tester,
7) Créer un groupe g1 et ensuite un compte u1 membre du groupe g1,
8) Faites de u1 et g1 le propriétaire et groupe propriétaire de [Link],
9) Vérifier,
10)Donner la lecture et l’écriture uniquement à u1,
11)Tester,
12)Créer un dossier doc1,
13)Donner le droit d’exécution uniquement à root,
14)Tester avec u1,
15)Afficher uniquement la ligne de /etc/passwd qui contient u1,
16)Quelle commande permet de chercher un fichier qui s’appel [Link],
17)Quelle commande permet de chercher les fichiers qui appartiennent a u1?
18)Quelle commande permet de chercher les fichiers qui ont une taille supérieure à 1M?
19)Afficher la liste des processus,
20)La commande pour Killer le processus qui consomme beaucoup de RAM?
EVALUATION DU JOUR
Un résumé de l’exposé :
1) Sur la salle serveur,
2) Sur le cooling,
3) Sur la redondance électrique & L’efficacité
énergétique des Datacenters,
4) Sur le traitement de déchet informatique,
5) Sur les types de serveur.
Fichiers configuration réseau
Pour les distributions de type RPM
/etc/sysconfig/network-scripts/

Pour chaque carte le fichier de configuration c’est ifcfg-ethi

Pour la carte eth0 = /etc/sysconfig/network-scripts/ifcfg-eth0


NAME="srv"
DEVICE="eth0"
HWADDR=AA:00:00:00:00:11
ONBOOT="yes"
BOOTPROTO="static"
NM_CONTROLLED="yes"
DNS1="[Link]"
DNS2="[Link]"
GATEWAY="[Link]"
IPV6INIT="no"
IPADDR="[Link]"
NETWORK="[Link]"
NETMASK="[Link]«
Pour la carte eth1 = /etc/sysconfig/network-scripts/ifcfg-eth1
NAME="srv"
DEVICE="eth1"
HWADDR=AA:00:00:00:00:11
ONBOOT="yes"
BOOTPROTO="static"
NM_CONTROLLED="yes"
DNS1="[Link]"
DNS2="[Link]"
GATEWAY="[Link]"
IPV6INIT="no"
IPADDR="[Link]"
NETWORK="[Link]"
NETMASK="[Link]«
Pour les distributions de type DEB
/etc/network/interfaces

iface eth0 inet static


address [Link]
netmask [Link]
gateway [Link]
dns-search [Link]
dns-nameservers [Link] [Link]
iface eth1 inet static
address [Link]
netmask [Link]
gateway [Link]
dns-search [Link]
dns-nameservers [Link] [Link]

/etc/[Link]
Nameserver
Commandes GNU/LINUX
f. -per m
-links et -inum
EVALUATION DU JOUR
[Link] y a combien de type de fichier sous GNU/LINUX?
[Link] est le dossier de travail du compte root et l’emplacement
des dossiers de travail des utilisateurs en général par défaut?
[Link] une RAM de 8GB, quelle doit être la taille de la partition
swap?
[Link] différence entre chemin absolu et relatif?
[Link] commande ls –lrt fait quoi?
LAB
1. Basculer en root,
2. Créer un répertoire /TD
3. copier le fichier /etc/passwd dans le dossier /TD
4. Renommer le fichier passwd copié dans /TD en [Link]
5. Créer un lien symbolique depuis le home de root sur /TD/[Link]
6. Chercher tous les fichiers .txt sur votre serveur,
7. En une seule commande chercher puis déplacer les fichiers .txt dans /TD
8. Chercher puis supprimé les fichiers .txt dont les noms tiennent sur quatre caractère,,
9. Ajouter une deuxième carte réseau à votre machine virtuelle,
[Link] [Link] comme IP à cette carte réseau,
11.Désactiver la première carte réseau,
[Link] votre VM, la carte réseau est toujours désactivée?
[Link] faire pour que la carte réseau reste désactivée même après reboot?
LAB (suite)
14. Editer le fichier /TD/[Link] en utilisant le lien symbolique crée dans /root
15. Ajouter la ligne « #Fichier des utilisateurs» avant la première ligne,
16. Sauver le fichier en [Link],
17. Chercher le mot root dans,
18. Remplacer « root » par « SuperAdmin »,
EVALUATION DU JOUR
[Link] commande permet de copier /etc/passwd en /home/user1/passwdN
tout en conservant les permissions?
[Link]éer en une seule commande l’arborescence /Sup/doc/3isrt?
[Link] un fichier [Link] de 30 octets dans l’arborescence?
[Link] et supprimer tous les fichiers .temp dans l’arborescence avec et sans
confirmation?
[Link] et renommer le fichier /data/[Link] en [Link] dans /data2
Retrouver des exécutables
b. which
Recherche de lignes
S’il n’y a pas de délimiteur (tabulation ou autre) dans une ligne, cut affiche toute la
ligne
EVALUATION DU JOUR
[Link] commande qui permet d’obtenir la liste des fichiers du
dossier /data dont le nom contient sup?
[Link] commande permet de déplacer tous les fichiers .mp3
du dossier /data dans le dossier /MP3
[Link] commande permet d’avoir la liste de tous les fichiers de
l’arborescence dont le nom commence par une lettre
majuscule suivi d’un chiffre puis d’un seul caractère?
[Link] commande permet de chercher tous les fichiers dont le
nom termine par old et les supprimes sans confirmation?
[Link] commande permet de chercher tous les fichiers dans
/data dont le nom ne termine pas par old et les supprimes
après confirmation?
LAB
1. Basculer en root,
2. Créer un répertoire /TD
3. copier le fichier /etc/passwd dans le dossier /TD
4. Renommer le fichier passwd copié dans /TD en [Link]
5. Afficher les lignes du /TD/[Link] qui contiennent le mot bash,
6. créer un fichier [Link] dans /TD qui contient les lignes du /TD/[Link] qui ne
contiennent pas le mot bash,
7. Afficher la liste des comptes et le nombre qui n’ont pas leur home dans /home,
8. Créer un fichier passwordNew à partir de /TD/[Link] qui a comme séparateur « |»,
9. Créer un fichier passwordNew13 qui contient uniquement les champs 1 & 3 du
fichier passwordNew,
[Link] par UID le fichier /TD/[Link] ,
[Link] utilisant VI dupliquer la ligne du compte root dans le fichier /TD/[Link]
[Link] commande permet de supprimer la ligne dupliquer du fichier /TD/[Link]
EVALUATION DU JOUR
[Link] commande permet de compter le nombre de fichier
dans /Data?
[Link] commande permet de compter le nombre d’utilisateur
dont le nom commence par « p »?
[Link] commande permet d’obtenir la liste de tous les fichiers
de /Data qui contiennent des lignes qui commence par une
lettre majuscule suivi d’un chiffre ?
[Link] commande permet d’extraire la colonne login du
/etc/passwd et de la trier ?
[Link] commande permet de crée /Lab/passwdnew à partir
de /etc/passwd et de remplacer le « : » par « | » dans
/Lab/passwdnew?
LAB 1
1. Créer un compte user1,
2. Créer deux comptes user2 et user3 ayant comme répertoire de travail respectivement
/users/user2 et /users/user3,
3. donner le droit ALL à user1,
4. Le droit rm à user2,
5. Le droit ifconfig à user3,
6. Modifier user1 en admin,
7. Changer le répertoire de travail de user2 en /data/user2,
8. Changer le nom complet de user3 en votre nom & prenom,
9. Supprimer le compte user2,
[Link]éer un groupe SUP,
[Link] de user3 et admin des membres de ce groupe
[Link] SUP en SUPMALI,
[Link] et supprimer le groupe TEST
14.Réduisez les droits du compte admin à juste pour gérer les utilisateurs.
AWK
awk
awk est une commande très puissante, c'est un langage de programmation a elle tout seule qui permet
une recherche de chaînes et l'exécution d'actions sur les lignes sélectionnées.

Elle est utile pour récupérer de l'information, générer des rapports, transformer des données entre
autres.
Une grande partie de la syntaxe a été empruntée au langage c, d'ailleurs awk sont les abréviations de
ces 3 créateurs dont k pour Kernighan, un des inventeurs du c.

La syntaxe de awk est la suivante:


awk [-F] [-v var=valeur] 'programme' fichier
ou
awk [-F] [-v var=valeur] -f fichier-config fichier

L'argument -F doit être suivi du séparateur de champ (-F: pour un ":" comme séparateur de champ).
L'argument -f suivi du nom du fichier de configuration de awk.
L'argument -v définit une variable (var dans l'exemple) qui sera utilisée par la suite dans le
programme.

Un programme awk possède la structure suivante: critère de sélection d'une chaîne {action}, quand
il n'y a pas de critère c'est que l'action s'applique à toutes les lignes du fichier.
Exemple:
awk -F":" '{print $NF}' /etc/passwd

Il n'y a pas de critères, donc l'action s'applique à toutes les lignes du fichier /etc/passwd.
L'action consiste à afficher le nombre de champ du fichier. NF est une variable prédéfinie d'awk,
elle est égale au nombre de champs dans une ligne.
Enregistrements et champs:

awk scinde les données d'entrée en enregistrements et les enregistrements en champ.


Un enregistrement est une chaîne d'entrée délimitée par un retour chariot, un champ est
une chaîne délimitée par un espace dans un enregistrement.
Par exemple si le fichier à traiter est /etc/passwd, le caractère de séparation étant ":", un
enregistrement est une ligne du fichier, et un champ correspond au chaîne de caractère
séparé par un ":" (login:mot de passe crypté:UID:GID:commentaires:home
directory:shell).

Dans un enregistrement les champs sont référencés par $1, $2, ..., $NF (dernier champ).
Par exemple pour /etc/passwd $1 correspond au login, $2 au mot de passe crypté, $3 à
l'UID, et $NF (ou $7) au shell.

L'enregistrement complet (une ligne d'un fichier) est référencé par $0.

Par exemple, si l'on veut voir les champs login et home directory de /etc/passwd, on
tapera:

awk -F":" '{print $1,$6}' /etc/passwd


Les expressions régulières
La syntaxe est la suivante:
/expression régulière/ {instructions}

$0 ~ /expression régulière/ {instructions}

les instructions sont exécutées pour chaque ligne contenant une chaîne satisfaisant à
l'expression régulière.

expression ~ /expression régulière/{instructions}


les instructions sont exécutées pour chaque ligne où la valeur chaîne de l'expression
contient une chaîne satisfaisant à l'expression régulière.
expression !~/expression régulière/ {instructions}
les instructions sont exécutées pour chaque ligne où la valeur chaîne de l'expression ne
contient pas une chaîne satisfaisant à l'expression régulière.
Soit le fichier adresse suivant (nom, numéro de téléphone domicile, numéro de portable,
numéro quelconque):

Nom Numéro home Numéro Portable


gwenael | 0298452223 | 0638431234 | 50
marcel | 0466442312 | 0638453211 | 31
judith | 0154674487 | 0645227937 | 23

L'exemple suivant vérifie que dans le fichier le numéro de téléphone domicile (champ 2)
et le numéro de portable (champ 3) sont bien des nombres.

awk 'BEGIN { print "On vérifie les numéros de téléphone; FS="|"}


$2 !~ /^[0-9][0-9]*$/ { print "Erreur sur le numéro de téléphone domicile, ligne
n°"NR":\n"$0}
$3 !~ /^[0-9][0-9]*$/ { print "Erreur sur le numéro de téléphone du portable, ligne
n°"NR":\n"$0}
END { print "Vérification terminé"} ' adresse
Les expressions relationnelles:
Un critère peut contenir des opérateurs de comparaison (- <, <=,==,!=,>=,>).

Exemple avec le fichier adresse suivant:


awk 'BEGIN { print "On cherche lignes dont le numéro (champ 4) est supérieur à 30";
FS="|"}
$4 > 30 { print "Numéro supérieur à 30 à la ligne n°"NR":\n"$0}
END { print "Vérification terminé"} ' adresse

Combinaison de critères
Un critère peut être constitué par une combinaison booléenne avec les opérateurs ou (||), et
(&&) et non (!). Exemple:
awk 'BEGIN { print "On cherche la ligne avec judith ou avec un numéro inférieur à 30";
FS="|"}
$1 = = "judith" || $4 < 30 { print "Personne "$1" numéro "$4" ligne n°"NR":\n"$0}
END { print "Vérification terminé"} ' adresse

Plage d'enregistrement délimitées par des critères


La syntaxe est la suivante critère1,critère2 {instructions}. Les instructions sont exécutées
pour toute les lignes entre la ligne répondant au critère1 et celle au critère2. L'action est
exécutée pour les lignes comprises entre la ligne 2 et 6.
awk 'BEGIN NR==2;NR==6 { print "ligne n°"NR":\n"$0}
END ' adresse
Les actions:
Les actions permettent de transformer ou de manipuler les données, elles contiennent une
ou plusieurs instructions. Les actions peuvent être de différents types: fonctions
prédéfinies, fonctions de contrôle, fonctions d'affectation, fonctions d'affichage.

Fonctions prédéfinies traitant des numériques:


atan2(y,x) arctangente de x/y en radian (entre -pi et pi)
cos(x) cosinus (radian)
exp(x) exponentielle à la puissance x
int(x) partie entière
log(x) logarithme naturel
rand(x) nombre aléatoire (entre 0 et 1)
sin(x) sinus (radian)
sqr(t) racine carrée
srand(x) définition d'une valeur de départ pour générer un nombre aléatoire
Fonctions prédéfinies traitant de chaînes de caractères:

Pour avoir la liste des fonctions prédéfinies sur votre plate-forme vous devez faire un man
awk,
Voici la liste des fonctions les plus courantes sur un système UNIX:
gsub(expression-régulière,nouvelle-chaine,chaine-de-caractères) :
dans chaine-de-caractères tous les caractères décrits par l'expression régulière sont
remplacés par nouvelle-chaine. gsub et équivalent à gensub.
gsub(/a/,"ai",oi") Remplace la chaine oi par ai
index(chaine-de-caractères,caractère-à-rechercher) donne la première occurrence du
caractère-à-rechercher dans la chaine chaine-de-caractères
n=index("patate","ta") n=3
length(chaine-de-caractères) renvoie la longueur de la chaine-de-caractères
n=length("patate") n=6
match(chaine-de-caractères,expression-régulière) renvoie l'indice de la position de la
chaîne chaine-de-caractères, repositionne RSTART et RLENGTH
n=match("PO1235D",/[0-9][0-9]/) n=3, RSTART=3 et RLENGTH=4
printf(format,valeur) permet d'envoyer des affichages (sorties) formatées, la syntaxe
est identique de la même fonction en C
printf("La variable i est égale à %7,2f",i) sortie du chiffre i avec 7 caractères (éventuellement
caractères vides devant) et 2 chiffres après la virgule.
printf("La ligne est %s",$0) > "[Link]" Redirection de la sortie vers un fichier avec >, on
peut utiliser aussi la redirection >>. Veillez à ne pas oublier les "" autour du nom du
fichier.
split(chaine-de-caractères,tableau,séparateur)
scinde la chaîne chaine-de-caractères dans un tableau, le séparateur de champ est le
troisième argument
n=split("zorro est arrivé",tab," ") tab[1]="zorro", tab[2]="est", tab[3]="arrivé", n=3
correspond au nombre d'éléments dans le tableau
sprintf(format,valeur) printf permet d'afficher à l'écran alors que sprintf renvoie la
sortie vers une chaîne de caractères.
machaine=sprintf("J'ai %d patates",i) machaine="J'ai 3 patates" (si i=3)
substr(chaine-de-caractères,pos,long) Extrait une chaine de longueur long dans la
chaîne chaine-de-caractères à partir de la position pos et l'affecte à une chaîne.
machaine=substr("Zorro est arrivé",5,3) machaine="o e"
sub(expression-régulière,nouvelle-chaine,chaine-de-caractères) idem que gsub sauf
que seul la première occurence est remplacée (gsub=globale sub)
system(chaine-de-caractères) permet de lancer des commandes d'autres programmes
commande=sprintf("ls | grep toto") Exécution de la commande UNIX "ls |grep toto"
system(commande)
tolower(chaine-de-caracteres) retourne la chaîne de caractères convertie en minuscule
toupper(chaine-de-caracteres) retourne la chaîne de caractères convetie en majuscule

Fonctions définies par l'utilisateur:

Vous pouvez définir une fonction utilisateur de telle sorte qu'elle puisse être considérée
comme une fonction prédéfinie.

La syntaxe est la suivant:


fonction mafonction (liste des paramètres)
{
instructions
return valeur
}
Les variables et opérations sur les variables:
Présentation :
On trouve les variables système et les variables utilisateurs. Les variables systèmes non
modifiables donnent des informations sur le déroulement du programme. Les variables
utilisateurs sont définies par l'utilisateur

Les variables utilisateur :


Le nom des variables est formé de lettres, de chiffres (sauf le premier caractère de la
variable), d'underscore. Ce n'est pas nécessaire d'initialiser une variable, par défaut, si
c'est un numérique, elle est égale à 0, si c'est une chaîne, elle est égale à une chaîne
vide. Une variable peut contenir du texte, puis un chiffre, en fonction de son utilisation awk
va déterminer son type (numérique ou chaîne).
Les variables prédéfinies (système):
Les variables prédéfinies sont les suivantes (en italique les valeurs par défaut):

ARGC nombre d'arguments de la ligne de commande néant


ARGIND index du tableau ARGV du fichier courant
ARGV tableau des arguments de la ligne de commande néant
CONVFMT format de conversion pour les nombres "%.6g"
ENVIRON tableau contenant les valeurs de l'environnement courant
ERRNO contient une chaîne décrivant une erreur ""
FIELIWIDTHS variable expérimentale à ne pas utiliser
FILENAME nom du fichier d'entrée néant
FNR numéro d'enregistrement dans le fichier courant néant
FS contrôle le séparateur des champs d'entrée " "
IGNORECASE contrôle les expressions régulières et les opérations sur les chaînes de
caractères 0
NF nombre de champs dans l'enregistrement courant néant
OFMT format de sortie des nombres (nombre après la virgule) "%.6g"
OFS séparateur des champs de sortie " «
ORS séparateur des enregistrements de sortie
RLENGTH néant longueur de la chaîne sélectionnée par le critère "\n«
RS contrôle le séparateur des enregistrements d'entrée "\n"
RSTART début de la chaîne sélectionnée par le critère néant
SUBSEP séparateur d'indiçage "\034"
Opérations sur les variables:
On peut manipuler les variables et leur faire subir certaines opérations.
On trouve différents types d'opérateurs, les opérateurs arithmétiques classiques (+, -, *, /,
%(modulo, reste de la division), ^ (puissance)), les opérateurs d'affectation (=, +=, -=, *=,
/=, %=, ^=). Exemples:
var=30 affectation du chiffre 30 à var
var="toto" affectation de la chaîne toto à var
var="toto " "est grand" concaténation des chaînes
"toto " et "est grand", résultat dans var
var=var-valeur var-=valeur expressions équivalentes
var=var+valeur var+=valeur expressions équivalentes
var=var*valeur var*=valeur expressions équivalentes
var=var/valeur var/=valeur expressions équivalentes
var=var%valeur var%=valeur expressions équivalentes
var=var+1 var++ expressions équivalentes
var=var-1 var-- expressions équivalentes
Les variables de champ:
Comme on l'a déjà vu auparavant les champs d'un enregistrement (ligne) sont
désignés par $1, $2,...$NF(dernier champ d'une ligne).
L'enregistrement complet (ou ligne) est désigné par $0. Une variable champ est a les
mêmes propriétés que les autres variables.
Le signe $ peut être suivi par une variable, exemple:
i=3
print $(i+1)
Provoque l'affichage du champ 4
Lorsque $0 est modifié, automatiquement les variables de champs $1,..$NF sont
redéfinies.
Quand l'une des variables de champ est modifée, $0 est modifié. ATTENTION le
séparateur ne sera pas celui définit par FS mais celui définit par OFS (output field
separator). Exemple:
awk 'BEGIN{print"Tous les utilisateurs du groupe users(GID 22) basculeront dans le
groupe boulot(GID 24)";FS=":";OFS=":"}
$4 != 22 {print $0} Si le groupe n'est pas users on fait rien
$4 ==22 {$4=24;print $0} Si le groupe est 22, on lui réaffecte 24
END {print" C'est fini"}' /etc/passwd > [Link]
Les structures de contrôle:
Présentation:
Parmi les structures de contrôle, on distingue les décisions (if, else), les boucles (while, for,
do-while, loop) et les sauts (next, exit, continue, break).
Les décisions (if, else)
La syntaxe est la suivante:
if (condition) si la condition est satisfaite (vraie)
instruction1 on exécute l'instruction 1
else sinon
instruction2 on exécute l'instruction 2
Si vous avez une suite d'instructions à exécuter, vous devez les regrouper entre deux
accolades.

Exemple:
awk ' BEGIN{print"test de l'absence de mot de passe";FS=":"}
NF==7 { pour toutes les lignes contenant 7 champs
if ($2=="") si le deuxième champ est vide (correspond au mot de passe crypté)
{ print $1 "n'a pas de mot de passe"} on affiche le nom de l'utilisateur ($1=login) qui n'a pas
de mot de passe
else sinon
{print $1 " a un mot de passe"} on affiche le nom de l'utilisateur possédant un mot de
passe
}END{print"C'est fini") ' /etc/passwd
Les boucles (while, for, do-while)
while, for et do-while sont issus du langage de programmation C. La syntaxe de while est
la suivante:
while (condition) tant que la condition est satisfaire (vraie)
instruction on exécute l'instruction

Exemple:

awk ' BEGIN{print"affichage de tous les champs de passwd";FS=":"}{


i=1 initialisation du compteur à 1 (on commence par le champ 1)
while (i=<NF) tant qu'on n'est pas en fin de ligne
{ print $i on affiche le champ
i++ incrémentation du compteur pour passer d'un champ au suivant
}
}END{print"C'est fini") ' /etc/passwd
for (instruction de départ; condition; instruction d'incrémentation)
On part d'une instruction de départ, on incrémente instruction on exécute l'instruction
jusqu'à que la condition soit satisfaite

Exemple:
awk ' BEGIN{print"affichage de tous les champs de passwd";FS=":"}
{ for (i=1;i=><NF;i++) initialisation du compteur à 1, on incrémente le compteur jusqu'à ce
qu'on atteigne NF (fin de la ligne)
{ print $i } on affiche le champ tant que la condition n'est pas satisfaite
}END{print"C'est fini") ' /etc/passwd

Avec for on peut travailler avec des tableaux. Soit le tableau suivant: tab[1]="patate",
tab[2]="courgette",tab[3]="poivron". Pour afficher le contenu de chacun des éléments du
tableau on écrira:
for (index in tab)
{
print "legume :" tab[index]
}
La syntaxe de do-while est la suivante:
do
{instructions} on exécute les instructions
while (condition) jusqu'à que la condition soit satisfaite

La différence avec while, est qu'on est sûr que l'instruction est exécutée au moins une fois.
Sauts controlés (break, continue, next, exit)
break permet de sortir d'une boucle, la syntaxe est la suivante:
for (;;;) boucle infinie
{instructions on exécute les instructions
if (condition) break si la condition est satisfaite on sort de la boucle
instructions}
Alors que break permet de sortir d'une boucle, continue force un nouveau passage dans une
boucle.
next permet d'interrompre le traitrement sur la ligne courante et de passer à la ligne suivante
(enregistrement suivant).
exit permet d'abandonner la commande awk, les instructions suivant END sont exécutées (s'il
y en a).
Les tableaux
Présentation
Un tableau est une variable se composant d'un certains nombres d'autres variables
(chaînes de caractères, numériques,...), rangées en mémoire les unes à la suite des
autres. Le tableau est dit unidimensionnelle quand la variable élément de tableau n'est
pas elle même un tableau. Dans le cas de tableaux imbriqués on parle de tableau
unidimensionnels.
Les termes matrice, vecteur ou table sont équivalents à tableau.

Les tableaux unidimensionnels


Vous pouvez définir un tableau unidimensionnel avec la syntaxe
suivante:tab[index]=variable, l'index est un numérique (mais pas obligatoirement, voir les
tableaux associatifs), la variable peut être soit un numérique, soit une chaîne de
caractère. Il n'est pas nécessaire de déclarer un tableau, la valeur initiale des éléments
est une chaîne vide ou zéro. Exemple de définition d'un tableau avec une boucle for.
var=1
for (i=1;i<=NF;i++)
{ mon-tab[i]=var++}

On dispose de la fonction delete pour supprimer un tableau (delete tab). Pour supprimer
un élément de tableau on tapera delete tab[index].
Les tableaux associatifs
Un tableau associatif est un tableau unidimensionnel, à ceci près que les index sont
des chaînes de caractères.
Exemple:
age["olivier"]=27
age["veronique"]=25
age["benjamin"]=5
age["veronique"]=3
for (nom in age)
{ print nom " a " age[nom] "ans" }

On a un tableau age avec une chaîne de caractères prénom comme index, on lui
affecte comme éléments de tableau un numérique (age de la personne mentionnée
dans le prénom). Dans la boucle for la variable nom est remplie successivement des
chaînes de caractères de l'index (olivier, veronique, ...).

Les valeurs de l'index ne sont pas toujours triées.


Les tableaux multidimensionnels:
awk n'est pas prévu pour gérer les tableaux multidimensionnels (tableaux imbriqués, ou
à plusieurs index), néanmoins on peut simuler un tableau à deux dimensions de la
manière suivante. On utilise pour cela la variable prédéfinie SUBSEP qui, rappelons le,
contient le séparateur d'indiçage. Le principe repose sur la création de deux indices (i, j)
qu'on va concaténer avec SUBSEP (i:j).
SUBSEP=":"
i="A",j="B"
tab[i,j]="Coucou"

L'élément de tableau "Coucou" est donc indexé par la chaîne "A:B".


LVM
LVM
LVM (Logical Volume Manager, ou gestionnaire de volumes logiques en français) :
Permet la création et la gestion de volumes logiques sous Linux. L'utilisation de
volumes logiques remplace en quelque sorte le partitionnement des disques.
C'est un système beaucoup plus souple, qui permet par exemple de diminuer la taille
d'un système de fichier pour pouvoir en agrandir un autre, sans se préoccuper de leur
emplacement sur le disque.
Avantages de LVM:
• Il n'y a pas de limitations « étranges » comme avec les partitions
(primaire, étendue, etc.).
• On ne se préoccupe plus de l'emplacement exact des données.
• On peut conserver quelques giga-octets de libres pour pouvoir les
ajouter n'importe où et n'importe quand.
• Les opérations de redimensionnement deviennent quasiment sans
risques, contrairement au redimensionnement des partitions.
• On peut créer des snapshots de volume sans perturber le
fonctionnement de la machine et sans interruption de services.
Inconvénients de LVM
Si un des volumes physiques devient HS, alors c'est l'ensemble des
volumes logiques qui utilisent ce volume physique qui sont perdus.

Pour éviter ce désastre, il faudra utiliser LVM sur des disques raid
par exemple
Création
Volume physique
Pvcreate
Groupe de volumes
Vgcreate
La syntaxe est donc :
vgcreate VolumeGroupName PhysicalVolume [optionnellement
d'autres PhysicalVolume]
Volume logique:
Lvcreate
lvcreate -n Vol1 -L 10g mvg
Lvremove pour la suppression
Système de fichiers
mkfs -t systemedefichier
Redimensionnement
Syntaxe:
Vgextend NonVG NomLvm

Exemple:
vgextend mvg /dev/sdc2

lvresize --resizefs --size +5G /dev/mvg/Vol2


EVALUATION DU JOUR
[Link] faire pour donner à User1 le droit de faire adduser?
[Link] commande permet d’afficher les utilisateurs qui ont un
id supérieur à 500?
[Link] variables $0 et $NF représente quoi avec awk?
4.hda5 & sdb5 représente quoi?
[Link] est le lien et la signification de PV, VG et LV
Complément commande
Remplacement de caractères:
Planificateur de tâche
Cron
Cron est la troncation de crontab, lui-même la
troncation de chrono table qui signifie « table de
planification »

crontab est le nom du programme sous Unix (et Linux)


qui permet d'éditer des tables de configuration du
programme cron. Ces tables spécifient les tâches à
exécuter et leur horaire d'exécution avec éventuellement
une périodicité. Par extension, on appelle souvent cron
(ou cron job en anglais) toute tâche lancée à horaire
périodique.
La commande crontab modifie un fichier relatif à l'utilisateur.

Par sécurité, crontab vérifie la syntaxe avant de mettre à jour le fichier.


Ce fichier se situe dans l'arborescence /var, par exemple :

/var/spool/cron/crontabs/<utilisateur> (AIX, HP-UX, Solaris, Debian GNU/Linux et Ubuntu)


/var/spool/cron/tabs/<utilisateur> (SuSE GNU/Linux)
/var/cron/tabs/<utilisateur> (FreeBSD et OpenBSD)
/var/spool/cron/<utilisateur> (Arch Linux, Fedora et CentOS)
/usr/lib/cron/tabs/<utilisateur> (OS X)
Ainsi pour l'utilisateur root sur une machine Debian, la table cron sera stockée dans
/var/spool/cron/crontabs/root

La majorité des systèmes Linux (SuSE, Debian, Red Hat) disposent en plus d'une table cron
centralisée dans /etc/crontab.

On trouve également des dossiers /etc/cron.d, /etc/[Link], /etc/[Link], /etc/[Link] et


/etc/[Link] qui contiennent les tables cron des différentes parties du système (rotation des
journaux, mise à jour de fichiers...).
Pour les postes de travail qui ne fonctionnent pas forcément 24h/24,
l'application anacron permet de lancer les commandes qui auraient dû l'être
lorsque l'ordinateur était éteint.
Utilisation
La ligne de commande suivante affiche le contenu de la table cron pour l'utilisateur courant :
crontab –l (Cette commande ne permet pas d'afficher la table centralisée /etc/crontab)

La commande suivante permet de modifier la table cron pour l'utilisateur courant :


crontab –e (Cette commande ne permet pas non plus de modifier la table centralisée
/etc/crontab).

Remplacement de la table:
crontab [Link]

Suppression de la table
crontab –r

Syntaxe de la table
mm hh jj MMM JJJ tâche
mm représente les minutes (de 0 à 59)
hh représente l'heure (de 0 à 23)
jj représente le numéro du jour du mois (de 1 à 31)
MMM représente l'abréviation du nom du mois (jan, feb, ...) ou bien le numéro du mois (de 1 à 12)
JJJ représente l'abréviation du nom du jour ou bien le numéro du jour dans la semaine :
0 = dimanche
1 = lundi
2 = mardi

6 = samedi
7 = dimanche (représenté deux fois pour les deux types de semaine)
Pour chaque valeur numérique (mm, hh, jj, MMM, JJJ) les notations possibles sont :

* : à chaque unité (0, 1, 2, 3, 4…)


5,8 : les unités 5 et 8
2-5 : les unités de 2 à 5 (2, 3, 4, 5)
*/3 : toutes les 3 unités (0, 3, 6, 9…)
10-20/3 : toutes les 3 unités, entre la dixième et la vingtième (10, 13, 16, 19)

Exemple:
0 0 13 * 5 tâche
Programmation Shell
Evaluation
1. Avantage et inconvénient des RAID1, RAID0 et RAID5 16. Sudo sert à quoi? Quelle commande permet d’ouvrir
2. Citez 5 tâches d’un administrateur système, son fichier de configuration?
3. Citez deux autres commandes de type VI, 17. Quelle commande permet d’afficher les lignes entre
4. Eth0 représente quoi? 10 et 20 du fichier /etc/passwd?
5. Donnez la configuration eth0 pour une distribution RPM & DEB 18. Sda, hda, hda2 et sd5 représente quoi?
en [Link]/24; GW: [Link] 19. Citez trois types de système fichier sous GNU/linux.
6. Quel fichier permet de spécifier le DNS à [Link] 20. Le partitionnement par LVM sert à quoi? Le lien
7. La commande ls- lrt /data fait quoi? entre PV, VG et LV?
8. Donnez la commande qui permet d’afficher les fichiers dont le
nom commence par A et termine par 2
9. Quelle commande permet de déplacer et renommer [Link]
dans /data avec le nom [Link] ?
10. Si /data2 contient un fichier la commande rmdir /data2
marche? Sinon c’est quoi la bonne commande?
11. Quelle commande permet de trouver les fichiers de plus de 10
GB dans l’arborescence?
12. Quelle commande permet de trouver les fichiers de plus de 10
ans dans l’arborescence et les supprimés?
13. Quelle commande permet de trouver dans /data les fichiers qui
contiennent des numéros de téléphone?
14. Quelle commande permet de construire à partir de /etc/passwd
le fichier [Link] qui contient les UID & Login trier par UID?
15. Affichez les lignes de /etc/passwd dont l’UID est > 100
Qu'est-ce qu'un Shell ?

Le Shell est le programme qui gère l'invite de commandes. C'est donc le programme qui
attend que vous rentriez des commandes .

• sh : Bourne Shell. L'ancêtre de tous les shells.


• bash : Bourne Again Shell. Une amélioration du Bourne Shell, disponible par défaut sous
Linux et Mac OS X.
• ksh : Korn Shell. Un shell puissant assez présent sur les Unix propriétaires, mais aussi
disponible en version libre, compatible avec bash.
• csh : C Shell. Un shell utilisant une syntaxe proche du langage C.
• tcsh : Tenex C Shell. Amélioration du C Shell.
• zsh : Z Shell. Shell assez récent reprenant les meilleures idées de bash, ksh et tcsh.
Déclaration du Shell
La première ligne d’un programme Shell doit définir le Shell de
choix si ce choix est différent du Shell par defaut

Syntaxe :
#!/bin/NonShell
Exemple:
#!/bin/bash
#!/bin/ksh
#!/bin/csh
Notre premier script par la pratique
Afficher et manipuler des variables
L’utilisation du expr est aussi possible
Les conditions
Les boucles
Les fonctions
LAB (1) programmation Shell

Ecrivez un programme Shell qui demande:


[Link] nom, prénom, Genre et l'Age
[Link] fonction du genre et de l'Age le programme doit dire:
- Bonjour Monsieur Nom Prénom si homme et plus de 18 ans
- Bonjour Jeune homme Nom Prénom si homme et moins de
18 ans
- Bonjour Mme Nom Prénom si femme de plus de 18 ans
- Bonjour Melle Nom Prénom si femme de mois de 18 ans
FIN

Vous aimerez peut-être aussi