Początkowe ustawienia
Jako administrator Linuksa zainstalowałeś nową skrzynkę Linux z 6 kartami sieciowymi eth0 do eth5. Interfejs eth0 jest poprawnie skonfigurowany, a wszystkie inne interfejsy są obecnie uruchomione, ale bez adresu IP. Faceci z sieci po prostu podłączyli cztery kable do tego urządzenia. Dwa kable LAN są używane do podłączenia urządzenia do sieci produkcyjnej, a dwa są używane do podłączenia urządzenia do sieci prywatnej. Wiesz tylko, że eth0 jest podłączony do sieci produkcyjnej. Ale nie wiesz, która inna karta sieciowa jest podłączona do tego samego przełącznika, ponieważ istnieją różne generacje serwerów i / lub faceci sieci używają niewłaściwych kart sieciowych do swoich połączeń.
Zadanie pod ręką
Ponieważ ta konfiguracja jest typowa dla Twojej infrastruktury, chcesz zautomatyzować konfigurację interfejsów łączenia. Teraz masz zadanie wykryć, które karty sieciowe w ogóle nie są podłączone, a które karty sieciowe są połączone z tym samym przełącznikiem, aby mogły zostać połączone. Masz dostęp tylko do Linux-a i nie możesz przeszukiwać przełączników.
Pomysły
Wykrywanie statusu łącza jest łatwe:
ethtool $device | grep 'Link detected' | cut -d ':' -f 2
Ale jak dopasować urządzenia podłączone do tego samego przełącznika?
W HP-UX jest do tego celu narzędzie o nazwie linkloop [1]. Brakuje oficjalnego narzędzia Linux (istnieje jednak stary projekt SourceForce).
Możliwe rozwiązania, które już przyszły mi do głowy:
Słuchaj na wszystkich interfejsach za pomocą tcpdump. Utwórz i wyślij pakiet ICMP (rozgłoszeniowy). Interfejsy, które widzą ten pakiet, muszą być podłączone do tego samego przełącznika. -> potrzebujesz sugestii prostych narzędzi, które mogą być do tego użyte. Chciałbym używać skryptów jako poleceń powłoki lub Pythona.
Spróbuj porozmawiać z zewnętrznym urządzeniem za pomocą prostego protokołu (HTTP?) I sprawdź, czy jest odpowiedź. -> Podatne na błędy i zależne od zewnętrznego urządzenia.
Czy masz dalsze pomysły lub sugestie, jak rozwiązać to zadanie?
Z góry dziękuję za wszystkie komentarze!