Назад | Перейти на главную страницу

Какие есть канонические / портативные средства определения ТОЛЬКО ip интерфейса

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

Я знаю, что это можно сделать, анализируя заклинания ifconfig, ipи т.д., но мне интересно, является ли это каноническим решением.

Из того, что я видел, самый простой способ постоянно получать эту информацию из различных ОС - это использовать фасад.

$ facter | grep ipaddress
ipaddress => 192.168.0.2 
ipaddress_eth0 => 192.168.0.2 
ipaddress_eth1 => 192.168.0.3

Смотрите также: Ссылка на встроенные факты марионеток.

Если вы хотите портативный, вам в значительной степени придется проанализировать вывод ifconfig. facter и ip например, не являются родными для Solaris и, вероятно, других операционных систем, подобных Uinix. Вывод ifconfig также зависит от платформы. Вам действительно нужно будет написать сценарий, который обнаруживает ОС и делает правильные вещи. Собрал несколько лайнеров для разных операционных систем Вот.

Я могу придумать одно каноническое решение, которое должно быть независимым от производителя и работать на многих платформах, включая Linux, * nix, Windows, прошивку маршрутизатора и многие другие системы.

Включите SNMP для всего, а затем возьмите список интерфейсов / IP-адресов через SNMP. Это относительно сложный способ получения информации, отсюда и удаление ip из ifconfig, ip, ipconfig и других инструментов.

Соответствующие разделы для прогулки включают

ifconfig - самый распространенный инструмент, с которым я сталкивался. Если вы уверены, что хотите работать только на уровне оболочки / ifconfig, просто напишите код оболочки для анализа вывода из «ifconfig en0» (вы упомянули, что знаете интерфейс). Проверьте статус: активен, а затем посмотрите в строке «inet», чтобы найти IP-адрес.

Кроме того, если у вас есть службы DNS в этих системах, вы можете просто разрешить вывод команды hostname.

Или даже добавьте дополнительную запись в ваш / etc / hosts (если у вас есть разрешение на основе файлов в миксе), например «selfAddress», и поместите туда IP-адрес коробки - одна вещь, которую нужно установить для каждой системы. Затем в вашем start / documentation / etc просто разрешите это статическое имя, и в каждой системе вы получите IP.