• [^] # Re: quelques remarques

    Posté par . En réponse au message ajouter une entrée fstab en bash. Évalué à 1. Dernière modification le 12 août 2015 à 13:12.

    Si tu as mailx tu peux remplacer "-a FROM" par -r .
    Comme précisé précédemment $USERNAME est root a priori mais je laisse la variable au cas où.
    Mettre la date à ton fichier est hasardeux car tu as déjà l'information et tu risques d'écraser les précédentes tentatives. Voir l'option "cp -b -S" pour un usage plus poussé

     #!/bin/bash
     # Exit immédiatement si quelque chose de non prévu arrive. ça peut éviter un effet boule de neige
     set -e
     CIFS_FILE=$HOME/.cifspasswd
     MOUNT_LOG=/tmp/mount.log
     USERNAME=$(id -un)
     HOSTNAME=$(hostname -f)
     FS_MOUNTS="//fileserver/share\t/mount/share"
     _mail () {
     cat $MOUNT_LOG | mail -s "[$HOSTNAME] $USERNAME: 1ドル" -r "$USERNAME@mycompany.com" it@mycompany.com
     }
     read -p "Put your windows login? " login
     read -s -p "Now put your windows password (*hidden*)? " password
     # Vérifie les droits de création
     touch $CIFS_FILE
     chmod 600 $CIFS_FILE
     # Ecrase le ficher s'il existe (n'ajoute pas à la fin)
     echo -e "username=$login\npassword=$password\ndomain=dom.local" > $CIFS_FILE
     # L'option -u t'évitera d'écraser ta sauvegarde
     cp -u -p -b -S "_$(date +%F)" fstab fstab.back
     # Créé un bloc de texte à copier (plus simple à adapter au besoin)
     cat <<EOD >>/tmp/fstab
     # ADDED BY 0ドル ($(date))
     $FS_MOUNTS\tcifs\t_netdev,users,rw,auto,users,credentials=$CIFS_FILE,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0"
     # END
     EOD
     # Crée les répertoires en remplaçant d'abord la tabulation en espace pour la commande mkdir
     mkdir -p $(tr "\t" " " <<<$FS_MOUNTS)
     # Envoie le résultat par mail
     if ! mount -va > $MOUNT_LOG
     then
     _mail "FSTAB ERROR"
     else
     _mail "fstab ok"
     fi
     # On garde la trace de la dernière exécution dans /tmp au cas où...
     # ... sinon rm -f $MOUNT_LOG