Bonjour,

Lors d'un pr�c�dent mail (http://lists.debian.org/debian-user-french/2004/debian-user-french-200403/msg00252.html) je recherchais la solution au probl�me expos� dans le titre de ce mail : - soit une machine poss�dant plusieurs cartes r�seaux fonctionnant sur les modules �ventuellement diff�rents
- 1 seule carte r�seau est reli�e au r�seau

-> comment faire pour que cette carte r�seau soit associ�e � l'interface eth0???

En effet, ces associations sont d�finies dans /etc/modules.conf (ou plus proprement dans un fichier /etc/modutils/network qui d�fini les alias vers les cartes r�seaux suivu d'un 'update-modules')
par exemple :

$> cat /etc/modutils/network
# Chargement des modules de cartes
# Cas le plus courant
alias eth0 tg3
# Autre Carte alias eth1 e1000


En fait, comme on m'a r�pondu alors,
"Ind�pendament des alias d�finis dans modules.conf, linux nomme les interface eth0, eth1, etc dasn l'ordre o� les modules sont charg�s" Pour etre exact, il me semble que l'ordre donn� dans /etc/modules.conf est respect� au boot mais si ensuite son s'amuse a remover les modules ins�r� ('rmmod tg3 e1000') et a les ins�rer � nouveau, alors l'ordre des interfaces suivra l'ordre des chargements de modules ('insmod e1000' suivi d'un 'insmod tg3' configurera eth0 sur e1000 et eth1 sur tg3, contrairement au fichier /etc/modules.conf)

En oubliant cela, avec la config decrite plus haut, si la carte e1000 est plugu�e et qu'on ne fait rien, elle sera associ�e � l'interface eth1...
On m'a proposer pas mal d'id�es :
- l'utilisation de nameif "qui permet de donner un nom � la carte en fonction de son adresse MAC" mais cela s'appliquait difficilement a mon cas,

- l' "ethernet bonding" qui consiste a
coupler tes deux interfaces sur le meme reseau pour n'en former qu'une seule et
unique. Ainsi si une de tes cartes montre des faiblesses, la seconde est
toujours la pour assurer le service. Ce concept avait l'air interessant mais semblait trop d�pendant du matos utilis�.

Pour m'en sortir, j'ai cr�� le script suivant.
Ce script, a placer dans /etc/rcS.d/ d�couvre les cartes r�seaux pr�sentes sur votre syst�me, d�tecte celle qui est pluggu�
charge le module associ� et l'associe � l'interface eth0.

Si aucune carte n'est pluggu�e, et bien il n'y aura pas d'interface eth0...
Dans la prochaine version du script, les interfaces non pluggu�es seront associ�es aux interfaces suivantes eth1, eth2 etc...
Si ca peut vous servir....
Remarques bienvenues.

------------------------------8<---------------------------------------------

#! /bin/sh

################################################################
# Fichier : initMultiNIConeth0
# Auteur : Sebastien Varrette <-----8<----Sebastien.Varrette-----8<[EMAIL PROTECTED]>
# 05 Mar 2004
#
# Description : Initialisation de l'interface eth0 sur la carte
# reseau qui est reellement pluguee
#
# Contexte : une machine possedant 1 ou plusieurs cartes reseaux
# dont une seule est pluguee. Le but de ce script est de configurer
# l'interface eth0 sur cette carte.
# Il y a d�couverte automatique des cartes r�seaux pr�sentes et
# des modules  associ�s
# J'ai personnellement plac� ce script dans /etc/init.d/  avec un
# lien dessus dans /etc/rcS.d/S36.... #
################################################################
# Version du script
version=0.1

#################################################################
# Verifie que les executables passes en argument sont presents
# Interface :
#    $@ contient une liste de binaire dont on verifie la presence
#################################################################
check_bin() {
   for BIN in $@; do
   if [ -z `which $BIN` ]; then
       echo "*** Error : command $BIN is required but unavailable ***"
       echo "You should run 'apt-get install $BIN'"
exit 1 fi
   done
}

#####################################################
# Verifie si l'interface eth0 est pluguee ou non
# A ce niveau, ethtool doit fonctionner correctement
#####################################################
checkPlugged() {
   PLUG=`ethtool eth0 | grep detected | cut -d ' ' -f 3`
   echo "check plug status for card $MODULE... $PLUG"
if [ $PLUG = "yes" ]; then exit 1
   fi
}


#################################
# Affichage du mode d'utilisation
#################################
print_usage() {
   echo "Usage : initMultiNIConeth0"
   echo "        initMultiNIConeth0 -h"
   echo "Available Options : "
   echo "        -h : affiche l'aide"
}

#####################
# Affichage de l'aide
#####################
print_help() {
echo "--------------------------------------------------------------------" echo "initMultiNIConeth0 : Initialization of interface eth0 on the network"
   echo "card which is really plugged"
   echo "Author : Sebastien Varrette <[EMAIL PROTECTED]>"
   echo "Version : $version"
echo "Context : a machine with one or more NIC and only one of them is plugged" echo " This script loads the correct module and associates it to eth0"
   print_usage
echo "--------------------------------------------------------------------"
}

##################### --- Debut du script --- ###################

if [ $# -ge 1 ]; then
   case $1 in
   -h*) print_help
       exit 1;;
start|stop);; *) print_usage
       exit 1;;
esac shift
fi

# Verification des commandes requises
check_bin discover ethtool

# on liste les cartes reseaux disponibles et les modules associes
echo "Discover network cards and associated modules..."
MODULE_LIST=`/sbin/discover --enable=pci -f "%m " ethernet`

# on supprime les modules qui sont eventuellement deja initialises
echo "Remove network modules previously loaded"
rmmod $MODULE_LIST 2>/dev/null

# Pour chaque module, on l'insere et on verifie si la carte associe est
# pluguee. Si oui, on est super content et on sort
for MODULE in $MODULE_LIST; do
   echo "Load module $MODULE"
   insmod $MODULE
   # On doit charger le mode inet par ifconfig pour que ethtool marche
   ifconfig eth0 inet up
   # il faut attendre un peu le temps que ifconfig ait configure eth0
   sleep 4
   checkPlugged
   ifconfig eth0 down
   rmmod $MODULE
done

------------------------------8<---------------------------------------------


--
S�bastien VARRETTE

------------------------------------------

#! /bin/sh

################################################################
# Fichier : initMultiNIConeth0
# Auteur : Sebastien Varrette <[EMAIL PROTECTED]>
# 05 Mar 2004
#
# Description : Initialisation de l'interface eth0 sur la carte 
# reseau qui est reellement pluggue
#
# Contexte : une machine possedant 1 ou plusieurs cartes reseaux
# dont une seule est pluguee. Le but de ce script est de configurer 
# l'interface eth0 sur cette carte. 
# Il y a d�couverte automatique des cartes r�seaux pr�sentes et 
# des modules  associ�s
# J'ai personnellement plac� ce script dans /etc/init.d/  avec un 
# lien dessus dans /etc/rcS.d/S36....   
#
################################################################
# Version du script
version=0.1

#################################################################
# Verifie que les executables passes en argument sont presents
# Interface : 
#    $@ contient une liste de binaire dont on verifie la presence
#################################################################
check_bin() {
    for BIN in $@; do
        if [ -z `which $BIN` ]; then
            echo "*** Error : command $BIN is required but unavailable ***"
            echo "You should run 'apt-get install $BIN'"
            exit 1          
        fi
    done
}

#####################################################
# Verifie si l'interface eth0 est pluguee ou non
# A ce niveau, ethtool doit fonctionner correctement
#####################################################
checkPlugged() {
        PLUG=`ethtool eth0 | grep detected | cut -d ' ' -f 3`
        echo "check plug status for card $MODULE... $PLUG"
        if [ $PLUG = "yes" ]; then  
                exit 1
        fi
}


#################################
# Affichage du mode d'utilisation
#################################
print_usage() {
    echo "Usage : initMultiNIConeth0"
    echo "        initMultiNIConeth0 -h"
    echo "Available Options : "
    echo "        -h : affiche l'aide"
}

#####################
# Affichage de l'aide
#####################
print_help() {
    echo "--------------------------------------------------------------------"
    echo "initMultiNIConeth0 : Initialization of interface eth0 on the network" 
    echo "card which is really plugged"
    echo "Author : Sebastien Varrette <[EMAIL PROTECTED]>"
    echo "Version : $version"
    echo "Context : a machine with one or more NIC and only one of them is 
plugged"
    echo "    This script loads the correct module and associates it to eth0"
    print_usage
    echo "--------------------------------------------------------------------"
}

##################### --- Debut du script --- ###################

if [ $# -ge 1 ]; then 
    case $1 in
        -h*) print_help
            exit 1;;
        start|stop);;  
        *)  print_usage
            exit 1;;
    esac    
    shift
fi

# Verification des commandes requises
check_bin discover ethtool

# on liste les cartes reseaux disponibles et les modules associes
echo "Discover network cards and associated modules..."
MODULE_LIST=`/sbin/discover --enable=pci -f "%m " ethernet`

# on supprime les modules qui sont eventuellement deja initialises
echo "Remove network modules previously loaded"
rmmod $MODULE_LIST 2>/dev/null

# Pour chaque module, on l'insere et on verifie si la carte associe est 
# pluguee. Si oui, on est super content et on sort
for MODULE in $MODULE_LIST; do
        echo "Load module $MODULE"
        insmod $MODULE
        # On doit charger le mode inet par ifconfig pour que ethtool marche
        ifconfig eth0 inet up
        # il faut attendre un peu le temps que ifconfig ait configure eth0
        sleep 4
        checkPlugged
        ifconfig eth0 down
        rmmod $MODULE
done

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Répondre à