08
10
2008

Script d'auto montage des partages Serveurs

Voici un petit script que j'ai mis dans le répertoire /etc/NetworkManager/dispatcher.d/, et qui porte le joli nom de 06-localmount.

Que fait ce script ?

Il vérifie mon ip afin de déterminer si je suis chez moi (auquel cas il montera les partitions de mon serveur privé) ou ailleur. On peux le personnaliser encore plus pour l'adapter en fonction de ses besoins (montage des partitions du serveur de l'école, du boulot, etc).

Voici le script en question :


#!/bin/bash
#===============================================================#
disconnect() {
   echo "Unmounting Samba mounts"

   types="nfs cifs smbfs"
   for type in ${types}
   do
      mnts=`mount | grep -i mnt | grep -i ${type} | cut -d " " -f3`
      for mnt in ${mnts}
      do
         echo "Unmounting ${mnt}"
         umount ${mnt}
         rmdir  ${mnt}
      done
   done
}

#===============================================================#
getIp() {
   ip=$(/sbin/ifconfig | grep -a1 ${1} | grep inet | cut -d ':' -f2 | cut -d ' ' -f1)
   echo "${ip}"
}
#===============================================================#
isInterfaceActive() {
   ip=$(getIp "${1}")
   if [ "${ip}" != "" ] ; then
      echo "1"
   else
      echo "0"
   fi
}

#===============================================================#
home() {
   /sbin/service iptables stop
   /sbin/service sshd restart

   mounts="192.168.1.1/donnee 192.168.1.1/prive 192.168.1.1/public"
   for mount in ${mounts}
   do
       host=$(echo $mount | cut -d'/' -f1)
       share=$(echo $mount | cut -d'/' -f2)
       if [ ! -d "/mnt/${host}/${share}" ] ; then
          mkdir -p "/mnt/${host}/${share}"
       fi
       mount -t cifs -o credentials=/etc/NetworkManager/credentials,uid=500,gid=500
//${host}/${share} /mnt/${host}/${share}
   done
}

#===============================================================#
nothome() {
   /sbin/service iptables restart
   /sbin/service sshd  stop
}

#===============================================================#
connect() {
   ip=$(getIp "${1}")

   if [ "${ip}" = "192.168.1.2" ] ; then
      home
   else
      nothome
   fi
}

eth="$1"
if [ "$2" = "up" ] ; then
   if [ $(isInterfaceActive "${eth}") -ne 0 ] ; then
       echo "$eth is active. Using it"
       connect "${eth}"
   fi
fi
if [ "$2" = "down" ] ; then
   disconnect
fi

N'oubliez pas le fichier contenant les informations sensibles (Identifiant/Mot de passe), à mettre dans un fichier dit credential. Pour ma part je l'ai mis à cette adresse : /etc/NetworkManager/credentials, et voici sa structure :


username=mon_login
password=mon_pass

Pas d'espaces entre le = !!!

Share/Save/Bookmark

Add a comment