#1 Le 27/06/2008, à 15:58
- karch
Script test reseau et mount des partages
Voici un petit script qui test si vos machines sont sur le réseau et mount les partages de celles-ci renseignées dans fstab si ce n'est pas deja le cas.
J'ai pris un cas avec 2 machines, 1 partage sur la 1ere et 2 sur la 2eme.
Si les machines ne sont pas "présentes" les répertoires sont démontés.
Le script verifie aussi que l'utilisateur et bien "root" et que la passerelle est OK ainsi qu'internet.
J'ai fait en sorte qu'aucune réponse de test ne s'affiche à l'ecran hormi mes "echo"
J'ai essayer d'etre aussi clair que possible dans mes annotations
Merci de me faire part de vos suggestion d'amélioration (bash et moi ca fait 2) et commentaires
PS : pour ce qui est du script en lui-même j'ai utilisé "case" parce que j'ai quelques soucis avec les "if" ...
PS2 : petite particularité, il faut avoir installer "fping". sudo apt-get install fping
et etre "root", un p'tit : sudo -s , devrait suffir
#!/bin/sh
## DEFINITION DES HOSTS
HOST=`(whoami)`>/dev/null 2>&1 ;
PASSERELLE=`(fping -r 1 192.168.0.1 | awk '{print $3}')` >/dev/null 2>&1 ;
HOST1=`(fping -r 1 192.168.0.2 | awk '{print $3}')` >/dev/null 2>&1 ;
HOST2=`(fping -r 1 192.168.0.3 | awk '{print $3}')` >/dev/null 2>&1 ;
NET=`(fping -r 1 google.fr | awk '{print $3}')` >/dev/null 2>&1 ;
## RECHERCHE DES MONTAGES
MHOST1=`(mount | grep /mnt/mount1 | awk '{print $3}')` ;
MHOST2=`(mount | grep /mnt/mount2 | awk '{print $3}')` ;
MHOST2=`(mount | grep /mnt/mount3 | awk '{print $3}')` ;
## Execution du script
case "$HOST" in
"root") ##verification qu'on est l'utilisateur root
{
{
case "$HOST1" in
"alive") ###verification que la machine1 est sur le réseau
echo "HOST1 : OK !" ;\
{
case "$MHOST1" in
"/mnt/host1") echo "Repertoire /mnt/mount1 deja monté" ;; ##verification du 1er partage
*) echo "mount de /mnt/host1" ;\
mount /mnt/mount1 >/dev/null 2>&1 ;; ##mount du 1er partage si pas monté
esac
};;
*) echo "HOST1 : << DOWN >>" ;\
echo "unmount de /mnt/mount1" ;\
umount /mnt/mount1 >/dev/null 2>&1 ;; ##demontage du 1er partage si la machine 1 n'est pas sur le reseau
esac
}
### Idem pour la machine 2 avec 2 partages au lieu d'un
{
case "$HOST2" in
"alive")
echo "HOST2 : OK !" ;\
{
case "$MHOST2" in
"/mnt/mount2") echo "Repertoire /mnt/mount2 deja monté" ;;
*) echo "mount de /mnt/mount2" ;\
mount /mnt/mount2 >/dev/null 2>&1 ;;
esac
case "$MHOST2" in
"/mnt/mount3") echo "Repertoire /mnt/mount3 deja monté" ;;
*) echo "mount de /mnt/mount3" ;\
mount /mnt/mount3 >/dev/null 2>&1 ;;
esac
};;
*) echo "HOST2 : << DOWN >>" ;\
echo "unmount de /mnt/mount2 et /mnt/mount3" ;\
umount /mnt/mount2 >/dev/null 2>&1 ;\
umount /mnt/mount3 >/dev/null 2>&1 ;;
esac
}
##verification que la passerelle est sur le reseau
case "$PASSERELLE" in
"alive") echo "passerelle ... OK !" ;;
*) echo "<< passerelle DOWN ! >>" ;;
esac
##verification que l'on accède à internet
case "$NET" in
"alive") echo "internet... OK !... (ouf)" ;;
*) echo "<< Internet... DOWN >>" ;;
esac
};;
*) echo "Seul l'utilisateur ROOT peut lancer le script" ;;
esac
Dernière modification par karch (Le 15/07/2008, à 08:38)
Hors ligne