La configuration initiale
En tant qu'administrateur Linux, vous avez installé une nouvelle boîte Linux avec 6 cartes réseau eth0 à eth5. L'interface eth0 est correctement configurée et toutes les autres interfaces sont actuellement actives mais sans adresse IP. Les gars du réseau ont simplement attaché quatre câbles à cette boîte. Deux câbles LAN sont utilisés pour connecter le boîtier au réseau de production et deux pour connecter le boîtier à un réseau privé. Vous savez seulement que eth0 est connecté au réseau de production. Mais vous ne savez pas quel autre NIC est connecté au même commutateur car il existe différentes générations de serveurs et / ou les gars du réseau utilisent les mauvais NIC pour leurs connexions.
Tâche à accomplir
Comme cette configuration est typique de votre infrastructure, vous souhaitez automatiser la configuration des interfaces de liaison. Vous avez maintenant la tâche de détecter les cartes réseau qui ne sont pas connectées du tout et celles qui sont liées au même commutateur afin qu'elles puissent être liées. Vous n'avez accès qu'aux boîtes Linux et ne pouvez pas interroger les commutateurs.
Des idées
La détection de l'état du lien est simple:
ethtool $device | grep 'Link detected' | cut -d ':' -f 2
Mais comment faire correspondre les appareils connectés au même commutateur?
Dans HP-UX, il existe un outil à cet effet appelé linkloop [1]. L'outil Linux officiel est manquant (il existe cependant un ancien projet SourceForce).
Les solutions possibles qui me sont déjà venues à l'esprit sont les suivantes:
Écoutez sur toutes les interfaces avec tcpdump. Créez et envoyez un paquet ICMP (diffusion). Les interfaces qui voient ce paquet doivent être connectées au même commutateur. -> besoin de suggestions d'outils simples qui peuvent être utilisés pour cela. Je voudrais utiliser des commandes shell simples ou Python pour les scripts.
Essayez de parler à un boîtier externe via un protocole simple (HTTP?) Et voyez s'il y a une réponse. -> Sujet aux erreurs et dépendant d'un boîtier externe.
Avez-vous d'autres idées ou suggestions pour résoudre cette tâche?
Merci d'avance pour tous les commentaires!