Linux : comment monter un disque réseau automatiquement
Sous Mint, Lorsque mon PC démarre, je veux qu’il « monte » automatiquement mes disques et qu’il fasse quelques vérifications au passage (dossier existant etc).
Problème : il arrive parfois la même chose que sous Windows, à savoir que si le mount ne fonctionne pas, il faut le faire à la main.
J’ai donc essayé de suivre plusieurs tutoriels et la plupart disaient d’ajouter dans les tâches planifiées (« cronjob
« ) une ligne qui commençait par @reboot
.
Je ne sais pas pourquoi, mais sur ma version de Mint, il ne connaissait pas @reboot
.
Après pas mal de recherches, voici ce que j’ai trouvé, et qui fonctionne parfaitement :
- Éditer
/etc/rc.local
- Lui ajouter la ligne de commande que l’on veut faire
Donc mon fichier /etc/rc.local
j’ai donc deux lignes de code :
/home/olivier/apply.config.perso.sh -f /home/olivier/boot.log
exit 0
(J’ai enlevé les commentaires très importants qu’il y a dans le fichier, à vous de les lire !)
Le code précédent signifie « lance le script /home/olivier/apply.config.perso.sh
« .
Et je me suis fait mon script, soit /home/olivier/apply.config.perso.sh
:
(Il prend en compte le paramètre « -f » pour préciser le fichier de sortie, comme cela je logue tout, on n’est jamais assez prudent).
# ----------------------------------------------
# command line options
# first save args to pass them later on to other scripts:
args=("$@")
while [ "$1" != "" ]; do
case $1 in
-f | --file ) shift
# test if output_filename starts with "-":
if [[ "$1" =~ ^-.* ]]; then
usage
exit
fi
# from that point on:
# direct all stdout and stderr to $1:
exec &>>$1
;;
-u ) # ignored here, for mount script (later in there)
;;
-h | --help ) usage
exit
;;
* ) usage
exit 1
esac
shift
done
echo "`(date '+%Y.%m.%d-%Hh%Mm%Ss')` $filename > Applying my own configuration..."
sudo -Hu olivier gsettings set org.cinnamon.settings-daemon.peripherals.keyboard delay 120
sudo -Hu olivier gsettings set org.cinnamon.settings-daemon.peripherals.keyboard repeat-interval 18
if mountpoint -q "/mnt/Olivier"; then
echo "`(date '+%Y.%m.%d-%Hh%Mm%Ss')` $filename > Already mounted, nothing to do."
else
delay=1
while ! mountpoint -q "/mnt/Olivier"; do
echo "`(date '+%Y.%m.%d-%Hh%Mm%Ss')` $filename > Trying to mount..."
# re-pass the same arguments via "${args[@]}"
/home/olivier/mount.diskstation.sh "${args[@]}"
sleep $delay
if [ "$delay" -gt 60 ]; then
echo "`(date '+%Y.%m.%d-%Hh%Mm%Ss')` $filename > Couldn't mount! Too long! Exiting."
exit 1
fi
delay=$((delay+5))
done
echo "`(date '+%Y.%m.%d-%Hh%Mm%Ss')` $filename > Successful mount."
fi
echo "`(date '+%Y.%m.%d-%Hh%Mm%Ss')` $filename > Done."
Explications :
Les deux ordres gsettings set org.cinnamon.settings-daemon.peripherals.keyboard
modifient la vitesse de mon clavier (qui n’est, de base, pas assez rapide pour moi).
L’ordre /home/olivier/mount.diskstation.sh
monte mon disque.
Ensuite je fais une boucle qui vérifie si mon « mount » est réussi ou pas : tant que ce n’est pas le cas, il attend un « compteur » qu’il augmente de 5s à chaque boucle, et tout ça au maximum 60 fois. Si vraiment il n’y arrive pas, il logue le problème et quitte.
Tout fonctionne parfaitement depuis maintenant 2 ans !