Bonjour,
Utilisateur novice du terminal, je connais assez peu les commandes shell, et je n'ai encore jamais écrit de script.
Face un premier besoin ce week-end, j'ai décidé de m'y mettre, mais j'ai du mal à comprendre la logique. Je suis familier des langages de programmation traditionnels (java, c++, php...), et ici, ça me semble un peu différent.
Le but du script est de lister les partitions du système, et de faciliter leur ajout dans fstab.
Il y a beaucoup de choses à améliorer ici, donc je vous remercie d'être indulgent.
Voici l'état actuel du script, en bash :
Ce qui donne sur la sortie qqchose comme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 #!/bin/bash echo "------------------------------------------" for line in `blkid` ; do if [[ ${line:0:1} == / ]] then # line begin with a slash partition=${line:0:${#line}-1} # unset other variables uuid= label= type= secType= fi if [[ ${line:0:4} == UUID ]] then # line begin with 'UUID' uuid=${line:6:${#line}-7} # echo UUID : $uuid fi if [[ ${line:0:5} == LABEL ]] then # line begin with 'LABEL' label=${line:7:${#line}-8} # echo Label: $label fi if [[ ${line:0:4} == TYPE ]] then # line begin with 'TYPE' type=${line:6:${#line}-7} # echo Type : $type fi if [[ ${line:0:8} == SEC_TYPE ]] then # line begin with 'SEC_TYPE' secType=${line:14:${#line}-15} # echo 'Second type : $secType' fi if [[ $type == ext3 ]] then # type seems to be the last parameter of the line # echo Partition : $partition - $label \($type\) echo ---Présent dans FSTAB : grep $uuid /etc/fstab echo ---Ligne à ajouter dans FSTAB : echo UUID=$uuid /media/$label $type nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1 fi done
Il me parait clair qu'il va falloir externaliser les traitements redondants dans une fonction, mais pour le moment, je n'en suis pas là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ------------------------------------------ ---Présent dans FSTAB : UUID=cd3a4d4f-1c77-4936-b598-8e81698c2756 / ext3 defaults,errors=remount-ro 0 1 ---Ligne à ajouter dans FSTAB : UUID=cd3a4d4f-1c77-4936-b598-8e81698c2756 /media/ ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1 ---Présent dans FSTAB : UUID=848560df-7d1b-4544-9fe9-0e6519970ac6 /media/musique ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1 ---Ligne à ajouter dans FSTAB : UUID=848560df-7d1b-4544-9fe9-0e6519970ac6 /media/musique ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1 ---Présent dans FSTAB : UUID=4234560e-ba93-4c8d-b8de-30e68d4f64f1 /media/videos ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1 ---Ligne à ajouter dans FSTAB : UUID=4234560e-ba93-4c8d-b8de-30e68d4f64f1 /media/videos ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1
J'aimerais récupérer la sortie de la commande grep afin de l'analyser. Par exemple, si elle retourne une ligne non commentée avec l'uuid de ma partition, je ne génère pas de sortie.
Par ailleurs, il serait intéressant de stoquer toutes les infos dans un tableau multidimentionnel, afin de pouvoir d'abord proposer à l'user les partitions qu'il doit ajouter, puis de lui générer les lignes à ajouter (ou même l'ajouter automatiquement).
De nombreuses améliorations sont possibles, comme l'ajout de la possibilité de modifier le label, la création des répertoires de montage. Aussi, dans un premier temps, je suis intéressé surtout par les conseils de programmation, et les explication concernant le fonctionnement de bash.
Merci d'avance!
Partager