Switch pour host

Publié le par Levi59

Voici un autre script switch, celui ci modifie automatiquement en fonction du réseau en se basant sur l'adresse MAC du point d'accès.

Dans ce cas, il n'y a que 2 modifications sur un fichier et donc j'ai pris 2 MOTIFs, 2 sed par situation, etc, car c'était moins lourd, mais si le nombre augmente, on peux se contenter d'un MOTIF et mettre en place une boucle FOR pour traiter plus de résultats...

 

 

 

  • gksudo gedit /usr/bin/switchhosts
#!/bin/bash
# script pour commenter/decommenter /etc/hosts en fonction du point d'acces
# Copyright (C) 07 dec. 2010, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.

# L'adresse MAC du reseau specifique (Ici domicile avec host perso)
    MACSPE="00:12:34:ab:cd:ef"

# Adresse MAC du point d'acces
    MAC=`ip neigh | awk -F" " '{print $5}'`

# fichiers de conf
    export HOSTS="$HOME/hosts"

# numero de la premiere ligne a modifier
# Configurer motif en mettant un motif en commentaire sur la ligne a modifier
# EX:
# 192.168.1.XX    UbuntuDesktop    # LIGNE1
# MOTIF1="LIGNE1"
# Ici 2 lignes à modifier
    MOTIF1="LIGNE1"
    LINEHOSTS1=`grep -n "$MOTIF1" $HOSTS | awk -F":" '{print $1}'`
    MOTIF2="LIGNE2"
    LINEHOSTS2=`grep -n "$MOTIF2" $HOSTS | awk -F":" '{print $1}'`

# recuperer premier element de la ligne de config des fichiers ("#" si commente)
    HOSTSCONF1=`cat $HOSTS | awk 'NR == '$LINEHOSTS1' {print;}' | cut -c -1`
    HOSTSCONF2=`cat $HOSTS | awk 'NR == '$LINEHOSTS2' {print;}' | cut -c -1`

# Modification du fichier selon point d'acces au reseaux
    if [ "$MAC" = "$MACSPE" ]
    then
# si au domicile, on decommenter fichier si commente
        [ "$HOSTSCONF1" = "#" ] && sudo sed -i ''$LINEHOSTS1' s/^#//g' $HOSTS || echo "pas de modification necessaire sur $MOTIF1"
        [ "$HOSTSCONF2" = "#" ] && sudo sed -i ''$LINEHOSTS2' s/^#//g' $HOSTS || echo "pas de modification necessaire sur $MOTIF2"
    else
# si pas au domicile, on commenter fichier si decommente
        [ "$HOSTSCONF1" != "#" ] && sudo sed -i ''$LINEHOSTS1' s/^/#/g' $HOSTS || echo "pas de modification necessaire sur $MOTIF1"
        [ "$HOSTSCONF2" != "#" ] && sudo sed -i ''$LINEHOSTS2' s/^/#/g' $HOSTS || echo "pas de modification necessaire sur $MOTIF2"
    fi
    exit

Publié dans Internet et réseaux

Commenter cet article