Перечисление «компьютеров, подобных мне» в моей подсети?

У нас есть сетевой продукт на основе Linux (назовите его «Z»), и мы склонны продавать их в пакетах, чтобы все они работали в одной и той же подсети, делающей одни и те же вещи и отправляя данные на один сервер (также на подсеть), которая координирует их все.

У единиц есть обычная, домашняя версия Linux на основе ядра 2.6.

Меня попросили изучить возможность добавления следующей функции:

«Любой блок Z должен иметь возможность находить другие узлы Z в локальной подсети и отображать их адреса IPv4. Список не должен включать другие несвязанные компьютеры, присутствующие в локальной подсети».

Пример:

  • Пользователь может ssh в любой произвольный блок Z и выдавать команду (может быть новый сценарий bash), называемый «listLocalSiblings».
  • Блок Z будет исследовать окрестности локальной сети и выпустить простой текстовый список IP-адресов ТОЛЬКО других блоков Z …

192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.30
192.168.1.37
192.168.1.71

В подсети различных операционных систем может быть несколько несвязанных устройств. Я хотел бы, чтобы это было настолько пассивным, насколько это возможно (например, избегайте сканирования портов или слушателя, ожидающего и отвечающего на специальные «пинги»).

Существует ли общий способ под Linux для категоризации сетевых устройств?

У меня действительно есть возможность добавить в продукт новое программное обеспечение, но если есть способ сделать это на основе какой-то внутренней сигнатуры, которую может иметь каждая машина, это было бы предпочтительнее. Мы никогда не пытались заставить эти машины «видеть» друг друга раньше, не имея при этом жестких способов кодирования, чтобы найти друг друга.

Изменить: по разным причинам мы не можем получить эту информацию с сервера. Пока предположим, что сервер разбился или кабель Ethernet был вынут из его задней части.

Затем список показан пользователю, с которым она может поступать, по своему усмотрению.

Устройства Z – это примерно одно и то же оборудование, хотя у старых есть более старые версии системы Linux и более старые материнские платы и сетевые платы, как и следовало ожидать.

В идеале было бы неплохо просто сбросить сценарий bash на каждом устройстве и запустить его, но я не знаю достаточно о сетевых инструментах, чтобы узнать, является ли это реалистичной перспективой.

Linux и Unix - лучшая ОС в мире.