• # quelques remarques

    Posté par . En réponse au message ajouter une entrée fstab en bash. Évalué à 3. Dernière modification le 31 juillet 2015 à 13:50.

    Le

    chown -R `whoami` $dir_tgt

    est inutile, c'est toi qui a créé ce répertoire un peu avant, donc il t'appartient déjà.
    De toute façon, si le script n'est pas exécuté par root il n'aura pas le droit de changer le propriétaire (et faire le reste non plus d'ailleurs).
    Si le but est de le remettre à root au cas où il existerait déjà avant, met explicitement root à la commande chown.
    Au passage, la syntaxe en backtick est dépréciée, il est préférable d'utiliser la version $() qui a l'avantage d'être imbriquable.
    Mais de toute façon, le mount peut échouer pour d'autres raisons, et tu pourrais aussi bien faire ce chown tout de suite après la tentative de création du répertoire.

    La commande interne read a une option -p pour afficher un prompt, ça économise le printf avant.

    Tu devrais toujours utiliser des double quotes autours de tes variables ($dir_tgt en l'occurrence), ce n'est pas un problème dans ton exemple car la variable ne contient rien de problématique, mais si tu modifie ultérieurement la valeur ça pourrait le de venir.0A;
    Ce n'est pas une bonne idée d'utiliser un fichier temporaire avec un nom fixe (surtout dans un répertoire commun et avec un nom aussi générique).
    Mieux vaut utiliser la commande mktemp pour générer un fichier temporaire avec un nom aléatoire, et ne pas oublier de le supprimer à la fin.
    Au passage, utiliser la redirection de type >> signifie que tu ajoute à la fin du fichier, ça ne me semble pas le but ici. (ou alors voudrais-tu que le log s'accumule à chaque exécution du script?)

    MOUNTLOG=$(mktemp mount.XXXXXX)
    mount -a > "$MOUNTLOG"
    #..suite
    rm -f "$MOUNTLOG"

    Plutôt que de tester le code de sortie de la commande mount, tu peux la mettre directement dans le if:

    if ! mount -a > "$MOUNTLOG" ;then

    (d'ailleurs il manquait un espace entre le 0 et le ])

    Tu utilise la commande mail, es-tu sur qu'il y aura toujours un serveur mail correctement configuré sur tous les serveurs où le script sera utilisé? (ou au minimum une implémentation locale de sendmail, comme dma ou ssmtp)
    Et puis, ce serait quand même bien d'informer la personne qui exécute le script si ça s'est passé correctement ou non.

    Pour finir, c'est une très mauvaise idée d'écrire un script complexe ex nihilo et de l'exécuter directement sur des machines de production. Mieux vaut le tester d'abord sur une machine qu'il est acceptable de casser un peu.
    Prépare-toi à devoir intervenir en urgence sur certaines machines qui ne fonctionneraient plus.