Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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