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 esttoujours 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_usageecho "--------------------------------------------------------------------"
}
##################### --- 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
smime.p7s
Description: S/MIME Cryptographic Signature

