#!/bin/sh # # Script de détection pour les montages NFS et la synchro. #DOMAIN=`grep domain /etc/resolv.conf | cut -d " " -f 2` DOMAIN=`hostname -d` ######################################################################## # # # FONCTIONS COMMUNES # # # ######################################################################## do_sync () { # On peut penser à passer en paramètre $1 le nom du répertoire # où est monté par NFS le home du réseau, à utiliser avec l'option # -m $1 for LOCAL_USER in `ls /home --ignore=lost+found`; do /usr/local/bin/filesync -u $LOCAL_USER -n .sync-$DOMAIN done } do_mounts () { # Bizarrement, mount -a -t nfs ne marche pas chez moi car les # répertoires NFS n'ont pas l'option auto (du moins c'est ce que # je pense). case $1 in up) CMD="mount";; down) CMD="umount";; esac for REP in $2; do $CMD $REP done } ######################################################################## # # # DOMAINE : vipere.noire # # # ######################################################################## do_vipere_noire_mounts () { # Pour d'autres domaines, ici on peut remplacer la commande awk par # une liste de répertoires prédéfinies en fonction du domaine sur # lequel on se branche. # # NFS_REPS="/mnt/home /var/mail /mnt/mp3" NFS_REPS=`grep -v "^#" /etc/fstab | awk '/nfs/{print $2}'` do_mounts $1 "$NFS_REPS" } do_vipere_noire_start () { do_vipere_noire_mounts up do_sync cp /etc/ppp/sendmail-lan.cf /etc/mail/sendmail.cf /etc/init.d/sendmail restart /etc/init.d/ntp stop /etc/init.d/ntpdate start /etc/init.d/ntp start } do_vipere_noire_stop () { do_sync do_vipere_noire_mounts down } ######################################################################## # # # FONCTIONS PRINCIPALES # # # ######################################################################## do_start_network () { case $DOMAIN in vipere.noire) do_vipere_noire_start;; esac } do_stop_network () { case $DOMAIN in vipere.noire) do_vipere_noire_stop;; esac } do_suspend_network () { case $DOMAIN in vipere.noire) do_vipere_noire_mounts down;; esac } do_resume_network () { case $DOMAIN in vipere.noire) do_vipere_noire_mounts up;; esac } case $1 in start) do_start_network;; stop) do_stop_network;; suspend) do_suspend_network;; resume) do_resume_network;; esac