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 = !!!