# Travail terminé, corrections

**URL:** <https://www.debian-fr.org/t/travail-termine-corrections/33195>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 2:54 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195 "2016-02-21T02:54:53Z")\
**Posts on this page:** 20\
**Page:** 11

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/201 "2016-02-21T03:09:38Z")

</div>

Je viens de voir qu’un nouveau topic avait été fait…  
bref… du coup :

[quote]Je déterre un peu le sujet pour apporter un morceau de code un peu différent.  
Plutôt que de checker /dev/sdxx ou le point de montage, je passe par l’uuid  
Pourquoi ? amusez-vous à plugger un DD usb, le monter, le couper électriquement (cas d’une panne électrique), de le rallumer  
il ne sera plus en /dev/sdc par exemple mais /dev/sdd  
Chose qui me posait souci chez un client.  
Avec l’uuid, ça passe bien mieux je trouve 🙂

ça donne qlqch comme ça :

[code]  
#remplacer par l’uuid correspondant au bon disque  
DISK=“00000000-0000-0000-0000-000000000000”

MOUNTPOINT="/mnt"

if mount -U ${DISK} ${MOUNTPOINT} ; then  
printf “$(date +%d-%m-%Y\ %Hh%M) - Montage du disque reussi.\n”  
…  
action  
…  
else  
printf "$(date +%d-%m-%Y\ %Hh%M) - Echec de montage du disque.\n"  
exit 0  
fi[/code]  
…et bien évidement on umount en fin de script

Si le disque est connecté et utilisable, alors on le monte dans MOUNTPOINT  
Si cela échoue pour une quelconque raison que ce soit (partition invalide, disque non connecté, etc.), alors on arrête tout  
Chez certains clients, j’ai même poussé le vice en rajoutant en cas d’échec l’écriture de la sortie d’un “ls -alh /dev/disk/by-uuid/” et d’un “blkid” dans un fichier log[/quote]

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/202 "2016-02-21T03:09:44Z")

</div>

C’est en effet un plus.  
Simple à modifier sur mon script :

```auto

```

remplacer les /dev/sdxy par l’UUID.  
Je testerai.

EDIT :  
testé mais infructueux.  
Ça bloque avant le montage.  
Il faut dire que mon système est plus complexe avec le choix de deux sauvegardes différentes.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/203 "2016-02-21T03:09:45Z")

</div>

Et ajouter le -U.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/204 "2016-02-21T03:09:45Z")

</div>

Oui, j’ai essayé mais si tu me dis où, je veux bien refaire.  
N’oublie pas que ça coince avant le “mount”

---

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/205 "2016-02-21T03:09:47Z")

</div>

pour repérer le bon uuid de manière simple :

```auto

```

De là repères l’uuid de ton sdb  
Normalement c’est un bloc comme indiqué dans mon précédent post (en terme de nombre de caractères)

Après, ton point de montage doit exister.  
S’il n’existe pas, il faut le créer.  
Par exemple, tu peux faire ainsi juste avant le bloc qui monte le disque

```auto
# on vérifie que le point de montage existe
# s'il n'existe pas, on essaie de le créer et on revérifie
# si la création a échoué une seconde fois, on stop tout

if [-d ${MOUNTPOINT}]; then
	printf "Le repertoire existe deja.\n"
else
	mkdir ${sync_directory}
	if [-d ${sync_directory}]; then
        	printf "Creation du repertoire reussie.\n"
	else
		printf "Impossible de creer le repertoire.\n"
		exit 0
	fi
fi
```

Une fois que tout ça est bon, tu peux monter ton disque avec le mount -U  
Le -U est important car c’est lui qui défini l’utilisation de l’uuid

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/206 "2016-02-21T03:09:48Z")

</div>

Je comprends bien ce que tu m’explique mais j’ai l’impression que tu es resté sur le fil précédent.  
Lis le script comme il est écrit maintenant et tu verras que ce n’est pas au montage que ça coince mais AVANT.  
Lis ça complètement :  
[http://www.isalo.org/wiki.debian-fr/index.php?title=Script\_de\_double\_sauvegarde\_altern%C3%A9e](http://www.isalo.org/wiki.debian-fr/index.php?title=Script_de_double_sauvegarde_altern%C3%A9e)

EDIT :  
ensuite, trouve-moi le moyen de remplacer /dev/sdb10 par l’UUID, dans cette ligne :  
ddext=(’’ ‘/dev/sdb9’ ‘/dev/sdb10’)

J’ai essayé en créant une variable mais … refusé.

---

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/207 "2016-02-21T03:09:48Z")

</div>

```auto
à remplacer par 
[code]ddext=('' 'uuid de sdb9' 'uuid de sdb10')[/code]
********************
la fonction sortie_propre devient inutile
********************
[code]
case ${REPLY} in
   	[1-2]) 	
index=${REPLY}
	if [! -e "${ddext[index]}" ] 
 	then 
		printf "\n Impossible de se connecter à %s \n Vérifiez qu'il s'agit de la bonne partition et recommencez \n" "${ddext[index]}" >&2; exit 1;
	else
		if ! grep -q "^${ddext[$index]} "$mount_rep" ${systeme_fich[$index]}" /etc/mtab 
		then
			sudo mount -t "${systeme_fich[$index]}" "${ddext[$index]}" "$mount_rep" || { deja_montee=1; sortie_propre; }
			break 
		else
			printf "Info : La partition ${ddext[$index]} est déjà montée\n" 
			deja_montee=1 
			break 
		fi		
	fi	
;;
	3) echo "On sort du script"; sortie_propre 
;;
	*) echo "Saisie non valide !"
;;
esac
done[/code]

[b]à remplacer par[/b]

[code]case ${REPLY} in
   	[1-2]) 	
index=${REPLY}
	if [! sudo mount -t "${systeme_fich[$index]}" -U "${ddext[$index]}" ${mount_rep} ] 
 	then 
		printf "\n Impossible de monter la partition" >&2; exit 1;
	fi
;;
	3) echo "On sort du script"; exit 0
;;
	*) echo "Saisie non valide !"
;;
esac
done[/code]

...à tester ainsi en n'oubliant pas de renseigner les uuid

edit: c/c foireux.. j'avais zapé un $ x_x
```

à remplacer par

```auto

```

* * *

la fonction sortie\_propre devient inutile

* * *

`
case ${REPLY} in
   	[1-2]) 	
index=${REPLY}
	if [! -e "${ddext[index]}" ] 
 	then 
		printf "\n Impossible de se connecter à %s \n Vérifiez qu'il s'agit de la bonne partition et recommencez \n" "${ddext[index]}" >&2; exit 1;
	else
		if ! grep -q "^${ddext[$index]} "$mount_rep" ${systeme_fich[$index]}" /etc/mtab 
		then
			sudo mount -t "${systeme_fich[$index]}" "${ddext[$index]}" "$mount_rep" || { deja_montee=1; sortie_propre; }
			break 
		else
			printf "Info : La partition ${ddext[$index]} est déjà montée\n" 
			deja_montee=1 
			break 
		fi		
	fi	
;;
	3) echo "On sort du script"; sortie_propre 
;;
	*) echo "Saisie non valide !"
;;
esac
done`

à remplacer par

`case ${REPLY} in
   	[1-2]) 	
index=${REPLY}
	if [! sudo mount -t "${systeme_fich[$index]}" -U "${ddext[$index]}" ${mount_rep} ] 
 	then 
		printf "\n Impossible de monter la partition" >&2; exit 1;
	fi
;;
	3) echo "On sort du script"; exit 0
;;
	*) echo "Saisie non valide !"
;;
esac
done`

…à tester ainsi en n’oubliant pas de renseigner les uuid

edit: c/c foireux… j’avais zapé un $ x\_x

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/208 "2016-02-21T03:09:49Z")

</div>

Oui mais dans ce cas, tu enlèves des tests qui ont été mûrement réfléchis.  
La fonction sortie\_propre() ne sert pas que là.  
Je laisse tes appréciations à l’étude de MisterFreez et de Totor, car je ne suis pas sûr que l’avantage des UUIDs soit bénéfique dans la balance contre la suppression de deux (au moins) tests.  
Mon avis est qu’il faudrait ne rien enlever tout en rajoutant la possibilité des UUIDS.

Pour la référence du script “à jour” :  
[http://www.isalo.org/wiki.debian-fr/index.php?title=Script\_de\_double\_sauvegarde\_altern%C3%A9e](http://www.isalo.org/wiki.debian-fr/index.php?title=Script_de_double_sauvegarde_altern%C3%A9e)

---

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/209 "2016-02-21T03:09:51Z")

</div>

[quote=“ricardo”]Oui mais dans ce cas, tu enlèves des tests qui ont été mûrement réfléchis.  
[/quote]  
oui et non

Dans mon bloc, le if fait plusieurs choses.

Le if en fait tente directement le mount par l’uuid  
Si cela échoue pour une quelconque raison que ce soit, alors il renvoie true. Autrement il renvoie false, ce qui implique non seulement que le disque était présent, accessible, que la partition l’était aussi, mais surtout que le mount s’est effectué convenablement.

De même, si la partition ciblée, référencée par l’uuid est déjà montée, alors le if renvoie true aussi car le mount échouera.  
Si tu veux continuer alors tes actions dans le cas où la partition est déjà montée, il suffit de l’indiquer en lisant oui le fichier mtab et d’y rechercher ton point de montage  
autrement dit, ce serait qlqch comme ça dans ton cas :

`case ${REPLY} in
   	[1-2]) 	
index=${REPLY}
	if [! sudo mount -t "${systeme_fich[$index]}" -U "${ddext[$index]}" ${mount_rep} ] 
 	then 
		if [$(cat /etc/mtab | grep ${mount_rep} | wc -l) -gt 0]
		then
			printf "\n La partition est déjà montée"
			sync
		else
			printf "\n Impossible de monter la partition" >&2; exit 1;
		fi
	fi
;;
	3) echo "On sort du script"; exit 0
;;
	*) echo "Saisie non valide !"
;;
esac
done`

ps: il manque des {}et $ dans ton script à plusieurs endroits  
exemple

```auto

```

manque $ devant index  
du reste, beaucoup de tes variables sont sans les {}, alors que d’autres les ont  
C’est plus propre je trouve de les mettre sur tout variable et ça évite plus tard d’en oublier malencontreusement 🙂

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/210 "2016-02-21T03:09:51Z")

</div>

[quote=“Mitsu”]…  
ps: il manque des {}et $ dans ton script à plusieurs endroits  
exemple

```auto

```

manque $ devant index  
du reste, beaucoup de tes variables sont sans les {}, alors que d’autres les ont  
C’est plus propre je trouve de les mettre sur tout variable et ça évite plus tard d’en oublier malencontreusement 🙂[/quote]  
Exact pour les manques, des oublis que je vais réparer 😊

EDIT :  
Fait, j’espère ne pas en avoir oublié 😉  
Pour la référence du script “à jour” :  
[isalo.org/wiki.debian-fr/ind … ern%C3%A9e](http://www.isalo.org/wiki.debian-fr/index.php?title=Script_de_double_sauvegarde_altern%C3%A9e)

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/211 "2016-02-21T03:09:53Z")

</div>

Bonsoir,

Je ne suis toujours pas rentré et je m’étais interdit de répondre avant mon retour mais je ne peux laisser passer ceci :

[quote=«&nbsp;Mitsu&nbsp;»]  
ps: il manque des {}et $ dans ton script à plusieurs endroits  
exemple

```auto
if [! -e "${ddext[index]}" ]
```

manque $ devant index[/quote]

C’est faux ! l’utilisation d’une variable pour indicer un tableau ne nécessite pas de $ (et donc de {}). Je suppose, ricardo, que tu as procédé à différents tests en alternant le choix du DD ? As-tu rencontré des problèmes lié à cet «&nbsp;index&nbsp;» ?  
Il existe 1 autre cas de figure où cela n’est pas utile : les expressions arithmétiques  
ex :

- if ((index != 0)); then echo «&nbsp;index \> 0&nbsp;»; fi
- ddsuivant=${ddext[$((index+1))]}

Quand au reste, je n’ai parcouru qu’en diagonale et je ne peux débattre sans me pencher plus posément sur la problématique soulevée et surtout sur l’alternative proposée. Tout ce que je peux dire dans l’immédiat c’est :

1. Oui, l’uuid peut s’avérer un meilleur choix
2. question : que faire en cas de changement de dd car l’ancien est en rade et/ou en manque de capacité… cela revient au même, il faut modifier le script. Cette remarque est d’ailleurs valable en l’état et c’est pour cela que j’avais proposé de rendre autonome (et indépendant de la plateforme et donc du matériel) le script par le biais de paramètres.

C’est un «&nbsp;lourd&nbsp;» chantier que j’avais toujours en tête…

voilà et @+

ps :

> [@Mitsu](#):
>
> ```auto
> ls -alh /dev/disk/by-uuid
> ```

→ udevadm --query=name --name= devrait donner l’info il me semble (pas tester donc à vérifier)

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/212 "2016-02-21T03:09:54Z")

</div>

Non, je n’avais aucun problème avant, ni après avoir effetué les modifs proposées par Mitsu.  
Je ne sais plus à quel Saint me vouer ![:119](https://www.debian-fr.org/uploads/default/original/1X/0287f377b0e103e172422ffbbe8c639fd3e12c9e.gif "vertige")  
J’aimerais bien que MisterFreez arbitre le débat.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:09 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/213 "2016-02-21T03:09:54Z")

</div>

> [@ricardo](#):
>
> J’aimerais bien que MisterFreez arbitre le débat.

Demain, je lis vraiment en diagonale ces deux derniers jours, mais à partir de demain j’ai mon week end de 3 jours 🙂

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:10 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/214 "2016-02-21T03:10:03Z")

</div>

[quote=«&nbsp;ricardo&nbsp;»]Non, je n’avais aucun problème avant, ni après avoir effetué les modifs proposées par Mitsu.  
Je ne sais plus à quel Saint me vouer ![:119](https://www.debian-fr.org/uploads/default/original/1X/0287f377b0e103e172422ffbbe8c639fd3e12c9e.gif "vertige")  
J’aimerais bien que MisterFreez arbitre le débat.[/quote]  
Il y a 3 manières décentes d’adresser les partitions :  
[ul]  
[li]le fichier représentant le périphérique /dev/sdXn. Il pose des problèmes car il n’est pas forcément toujours le même.[/li]  
[li]l’UUID pas agréable à utiliser mais fiable, il change lorsque l’on modifie la partition ou son système de fichier[/li]  
[li]les labels, comme les UUID, sauf qu’ils sont choisi par l’utilisateur. Ils ne sont par contre pas nécessairement uniques (dans ce cas il semble que le noyau garde toujours le denier). Mais bon c’est très rare.[/li][/ul]

Le choix est une question de goût (moi j’aime bien les labels).

Par contre les propositions de Mitsu, pour gérer les différents cas lors du montage n’ont rien de spécifiques à l’une des méthodes. Après quelques tests moi je propose quelque chose comme ça :

`out=$(mount -L EXT /mnt/EXT 2>&1)
if [! -z "${out}"]; then
  if [$(echo "${out}" | grep -c 'ajready mounted') -eq 1]; then
    echo "Déjà monté"
  else
    echo "Erreur du mount"
  fi
fi`  
Le problème c’est que je ne suis pas sûr que mount parle toujours anglais.

Sinon comme il a était fait mention de problèmes possible liés à /etc/mtab, on peut vérifier que le point de montage est déjà utilisé ainsi :

`mawk -v dir="${mount_rep}" '$2==dir { exit 1 }' /proc/mounts
if ["$?" -eq 1]; then
  echo "Point de montage déjà utilisé"
fi`  
/proc n’est jamais by-passé et est toujours accessible.

Je suis conscient que je ne te ménage pas là ricardo avec mawk. Imagine mawk (c’est pareil pour awk, mawk a juste un peu plus de fonctionnalité), comme un grep hyper évolué. Le «&nbsp;-v dir=$var&nbsp;» permet de passer une variable à mawk (c’est une fonctionnalité spécifique à mawk). Ensuite on a la chaîne ‹&nbsp;$2==dir { exit 1 }&nbsp;›, la première partie (avec le ==) est une condition et la seconde partie (entre {}) est un bloc de code. Cela signifie que pour chaque ligne du fichier passé en paramètre qui valide la condition on exécute le bloc de code.

Ici la condition ($2==dir) signifie que le bloc de code seras exécuté pour toutes les lignes dont le second champ est égale à la variable dir. Un champ est un mot d’une ligne séparé par des espaces (par défaut).

Là le bloc de code est simple, on quite awk avec le code 1 (comme avec le exit de bash).

Par exemple, si on passe le fichier :

`/dev/sda1 /mnt/1 ext4 ...
/dev/sda2 /mnt/2 btrfs ...`  
Il va commencer par lire la première ligne, la découper selon les espaces (donc ici les trois premiers champs seront «&nbsp;/dev/sda1&nbsp;», «&nbsp;/mnt/1&nbsp;» et «&nbsp;ext4&nbsp;»). Puis il va regarder si «&nbsp;/mnt/1&nbsp;» est identique au contenu de la variable dir si c’est le cas il quitte le programme (exit 1), sinon il passe à la ligne suivante.

Voila si tu ne préfère pas te prendre la tête avec awk, c’est pas un problème il est possible de gérer le cas avec un grep (c’est juste que je trouve awk plus joli).

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:10 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/215 "2016-02-21T03:10:06Z")

</div>

Bon, je reviens dans un mois hein ! le temps de tout déchiffrer ![:119](https://www.debian-fr.org/uploads/default/original/1X/0287f377b0e103e172422ffbbe8c639fd3e12c9e.gif "vertige")  
Je rigole mais je commence à perdre les pédales car je suis sur deux réponses en même temps, ce qui est une grave erreur de ma part.  
Je vais laisser ce problème en attente pour d’abord en terminer définitivement avec le bloc ‹&nbsp;corbeille&nbsp;›.  
On y reviendra ensuite, si tu le veux bien.

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:10 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/216 "2016-02-21T03:10:07Z")

</div>

> [@MisterFreez](#):
>
> Le problème c’est que je ne suis pas sûr que mount parle toujours anglais.

Eh bien, il suffit de lui demander gentiment (comme pour tout autre programme dont on a besoin d’analyser la sortie de manière fiable, au hasard ifconfig, que je vais d’ailleurs prendre pour exemple). 😉

[code]# récupérer la ligne contenant l’adresse IP et le masque dans ifconfig  
ifconfig lo | grep -F ‹&nbsp;inet adr:&nbsp;›  
inet adr:127.0.0.1 Masque:255.0.0.0

# cool, ça marche… sur ma machine configurée en français… mais je vais avoir un souci pour diffuser ça à l’international !

# pour s’assurer que ça marchera sur n’importe quelle machine, anglaise, française, allemande, chinoise, klingon, il faut forcer la langue de sortie…

# sauvegarder la langue courante pour pouvoir la remettre après

OLD\_LANG=«&nbsp;$LANG&nbsp;»

# aucune langue = anglais

LANG=«&nbsp;&nbsp;»

# récupérer l’adresse IP (on notera les deux ‹&nbsp;d&nbsp;› à ‹&nbsp;addr&nbsp;› contrairement au français, de même que le terme ‹&nbsp;Mask&nbsp;› dans la sortie et non plus ‹&nbsp;Masque&nbsp;›)

ifconfig lo | grep -F ‹&nbsp;inet addr:&nbsp;›  
inet addr:127.0.0.1 Mask:255.0.0.0

# on remet la langue d’origine

LANG=«&nbsp;$OLD\_LANG&nbsp;»[/code]

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:10 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/217 "2016-02-21T03:10:10Z")

</div>

Allez puisque tu m’embête. Par défaut dans mon environnement j’ai ça :

```auto

```

Et il est donc en anglais.

Maintenant on va faire une annalyse un peu plus poussé.

`$ which moun
/bin/mount
$ dpkg -S $(!!)
mount:/bin/mount
$ apt-cache show mount
... pleins de trucs ...
Pre-Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.6), libselinux1 (>= 2.0.15), libsepol1 (>= 1.14), libuuid1 (>= 2.16)
Suggests: nfs-common (>= 1:1.1.0-13)
... pleins d'autres trucs ...
`  
Donc il n’a pas de paquet internationalisation ensuite :

`$ ldd /bin/mount
	linux-vdso.so.1 => (0x00007fffe21ff000)
	libblkid.so.1 => /lib/libblkid.so.1 (0x00007feaa683c000)
	libuuid.so.1 => /lib/libuuid.so.1 (0x00007feaa6638000)
	libselinux.so.1 => /lib/libselinux.so.1 (0x00007feaa6419000)
	libsepol.so.1 => /lib/libsepol.so.1 (0x00007feaa63dd000)
	libc.so.6 => /lib/libc.so.6 (0x00007feaa607c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007feaa6a6d000)
	libdl.so.2 => /lib/libdl.so.2 (0x00007feaa5e77000)`  
Pas de liens ver gettext ou une autre bibliothèque d’internationalisation.  
Enfin :

`$ dpkg -L mount
/.
/bin
/bin/umount
/bin/mount
/usr
/usr/share
/usr/share/doc
/usr/share/doc/mount
/usr/share/doc/mount/README.mount
/usr/share/doc/mount/copyright
/usr/share/doc/mount/changelog.gz
/usr/share/doc/mount/examples
/usr/share/doc/mount/examples/fstab
/usr/share/doc/mount/changelog.Debian.gz
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/mount.8.gz
/usr/share/man/man8/swapoff.8.gz
/usr/share/man/man8/umount.8.gz
/usr/share/man/man8/losetup.8.gz
/usr/share/man/man8/swapon.8.gz
/usr/share/man/man5
/usr/share/man/man5/fstab.5.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/mount
/sbin
/sbin/losetup
/sbin/swapon
/sbin/swapoff`  
Aucun fichier ne semble travailler sur l’internationalisation.

Donc voila s’il y a possibilité de l’internationalisé, je ne sais pas comment faire. Si tu pouvais lancer un petit :

```auto

```

Ça permettrais de voir si ton installation est différente de la mienne.

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:10 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/218 "2016-02-21T03:10:11Z")

</div>

Il est en anglais aussi chez moi.

Cela dit, je réagissais uniquement sur le «&nbsp;je ne suis pas sûr&nbsp;» en te donnant une technique dont je me sers souvent pour «&nbsp;être sûr&nbsp;», quoi qu’il arrive, et qui est valable pour toutes les commandes (donc assez utile)… 😉

J’avoue, moins je me pose de questions mieux je me porte, et mon caractère fait que je préfère éliminer la source du problème plutôt que de laisser le moindre doute subsister (ou même que de chercher si problème il y a réellement). Appelons ça de la fainéantise appliquée… ![:eusa-whistle:](https://www.debian-fr.org/uploads/default/original/1X/899b2c331f8cc02517f77948602974610a95f952.gif "Whistle")

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:10 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/219 "2016-02-21T03:10:17Z")

</div>

> [@syam](#):
>
> J’avoue, moins je me pose de questions mieux je me porte, et mon caractère fait que je préfère éliminer la source du problème plutôt que de laisser le moindre doute subsister (ou même que de chercher si problème il y a réellement). Appelons ça de la fainéantise appliquée… ![:eusa-whistle:](https://www.debian-fr.org/uploads/default/original/1X/899b2c331f8cc02517f77948602974610a95f952.gif "Whistle")

À 2h du mat’, je suis généralement moins systématique qu’en journée.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/220 "2016-02-21T03:11:11Z")

</div>

Le script complet est ici, je demande qu’il ne soit plus proposé d’autre modifications, sauf si une erreur grave était découverte. Merci à tous pour l’aide apportée.

[code]#!/bin/bash

### BEGIN INIT INFO

# Nom du script : sauvegarde

# Auteur : Ricardo, aidé de l’équipe de ‘[debian-fr.org](http://debian-fr.org)’

# Date de création : juillet 2011

# Utilité : faciliter les sauvegardes

# Version : cette version est écrite pour l’utilisation avec deux partitions de sauvegarde, à alterner dans le temps.

#+ Il est souhaitable que ces partitions soient sur un DD différent de celui qui abrite le système.  
#+ Ce script a été écrit de façon à ce qu’il soit le plus générique possible. Les seules données que vous devriez devoir changer,  
#+ se trouvent dans la partie droite des variables.

# Pre-requis : voir tuto = [http://www.debian-fr.org/sauvegarde-clonage-d-une-sid-t25179.html](http://www.debian-fr.org/sauvegarde-clonage-d-une-sid-t25179.html)

#+ et page du WIKI = [http://www.isalo.org/wiki.debian-fr/index.php?title=Script\_de\_double\_sauvegarde\_alternée](http://www.isalo.org/wiki.debian-fr/index.php?title=Script_de_double_sauvegarde_altern%C3%A9e)

# Description : script permettant d’effectuer, régulièrement et de façon simple, les sauvegardes de son système

# Droits : entièrement libres mais en cas de copie, la citation de “[debian-fr.org](http://debian-fr.org)” nous serait agréable

# Modifié le : 22 août 2011

# Objet de la modification : améliorations diverses

### END INIT INFO

#----------------- Fonctions ----------------------------  
function sauvegarde()  
{  
sudo rsync -av --del --backup --backup-dir="$1" --exclude-from="$2" “$3” “$4”

```
	# Teste si la sauvegarde a abouti ( = 0), sinon, on sort.
	if (("$?" > 0))
	then
			printf "\nErreur lors de la sauvegarde de %s\n" "$3" 
	else
			printf "\nSauvegarde de %s : OK\n" "$3"
			sleep 10
	fi  

```

}

function sortie\_propre()  
{  
# Si la partition de sauvegarde n’était pas montée lors de l’appel, on la démonte avant de sortir.  
if [“${deja\_montee}” = 0]  
then  
sudo umount "${mount\_rep}"  
else   
# Si la partition de sauvegarde était déjà montée lors de l’appel, on sort sans la démonter mais en s’assurant que les données ont bien été écrites.  
sync  
fi  
exit  
}

#----------------- Variables -------------------

# CETTE PARTIE DOIT RETENIR TOUTE VOTRE ATTENTION, C’EST LÀ QUE VOUS PERSONNALISEREZ CE SCRIPT

#+ POUR CE FAIRE, JE VOUS CONSEILLE DE VOUS RÉFÉRER AU TUTO ET AU SCRIPT INDIQUÉS DANS LE “PRE-REQUIS” DU “BEGIN INIT INFO”

mount\_rep="/mnt/autre"

# la première donnée, vide, figure le [0], de façon à commencer par [1]

ddext=(’’ ‘/dev/sdb9’ ‘/dev/sdb10’)  
systeme\_fich=(’’ ‘ext3’ ‘ext2’)  
controle=(’’ ‘/home/controle’ ‘/home/controle-ricardo’)  
exclure=(’’ ‘/root/exclure’ ‘/home/ricardo/.exclure’)  
sauve=(’’ ‘/mnt/autre/sauve’ ‘/mnt/autre/sauve-ricardo’)  
dossier\_a\_sauver=(’’ ‘/’ ‘/home/ricardo’)

#----------------- Départ du script ----------------------------

# Teste l’existence du dossier de montage, sinon, on sort avec erreur 1.

```
mkdir -p "${mount_rep}" || { echo "Le dossier de montage n'existe pas !" >&2; exit 1; }	

```

# Choix, puis test de la partition de sauvegarde. Si le montage ne s’effectue pas, on sort via la fonction sortie\_propre()

deja\_montee=0  
PS3="Entrez le N° de la sauvegarde choisie : "  
select choix\_sauvegarde in “sauve” “sauve2” quitter  
do  
case ${REPLY} in  
[1-2])   
index=${REPLY}  
if [! -e “${ddext[$index]}” ]  
then  
printf “\n Impossible de se connecter à %s \n Vérifiez qu’il s’agit de la bonne partition et recommencez \n” “${ddext[$index]}” \>&2; exit 1;  
else  
if ! grep -q “^${ddext[$index]} “${mount\_rep}” ${systeme\_fich[$index]}” /etc/mtab  
then  
sudo mount -t “${systeme\_fich[$index]}” “${ddext[$index]}” “${mount\_rep}” || { deja\_montee=1; sortie\_propre; }  
break  
else  
printf "Info : La partition ${ddext[$index]} est déjà montée\n"  
deja\_montee=1  
break  
fi   
fi   
;;  
3) echo “On sort du script”; sortie\_propre  
;;  
\*) echo “Saisie non valide !”  
;;  
esac  
done

# Teste l’emplacement de la corbeille et si elle est pleine (présence de fichier(s) dans … /files). Si elle l’est, liste les fichiers qu’elle contient

echo -e “\033[4mCONTENU de la CORBEILLE\033[0m\n”

[-z “$XDG\_DATA\_HOME”] && chemin\_trash="$HOME/.local/share/Trash" || chemin\_trash="$XDG\_DATA\_HOME/Trash"  
corbeille="$chemin\_trash/files"

```
if [-z $(ls -A "$corbeille") &> /dev/null] 
then
	echo "LA CORBEILLE EST VIDE"		
else		 
	ls -a "$corbeille"	
	read -p "on peut la vider ? o/* : " vider	 
		if ["$vider" = o] 
		then	
			shopt -s dotglob
			rm -rf "$chemin_trash"/{files/,info/,metadata}*
			shopt -u dotglob
			echo "CORBEILLE VIDÉE"
		else
			echo -e "\033[4mCORBEILLE CONSERVÉE PLEINE\033[0m"
		fi		
fi 		

```

# Ordre de sauvegarde faisant appel à la fonction ‘sauvegarde()’

read -p "prêt pour la sauvegarde ? o/\* : " onyva  
if [“$onyva” = o]  
then  
for((index=1; index \< ${#controle[@]}; index++))  
do  
sauvegarde “${controle[$index]}” “${exclure[$index]}” “${dossier\_a\_sauver[$index]}” "${sauve[$index]}"  
done  
fi  
sortie\_propre

[/code]

[Page précédente](https://www.debian-fr.org/t/travail-termine-corrections/33195.md?page=10)
