Ruby - Независимый от платформы способ определить дюйм/с всех сетевых интерфейсов?

Существует ли простой способ в Ruby для меня для получения списка IP-адресов для всех сетевых интерфейсов? Это должно работать в Linux/Win/OSX, и я предпочел бы не должным быть анализировать ifconfig/ipconfig, если я абсолютно не имею к.

7
задан Tindron 16 March 2010 в 04:10
поделиться

2 ответа

Я не думаю, что у ruby ​​есть стандартный api для этого, но при некоторых предположениях это должно быть достаточно надежным для разных платформ:

require 'socket'
Socket::getaddrinfo(Socket.gethostname, 'echo', Socket::AF_INET).map { |x| x[3] }

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

Редактировать: Если вы решите приступить к синтаксическому анализу ifconfig, подумайте о разветвлении ruby-ifconfig . Он утверждает, что делает это уже на большинстве платформ, отличных от Windows.

2
ответ дан 6 December 2019 в 15:20
поделиться

Посмотрите следующий пост:

http://coderrr.wordpress.com/2008/05/28/get-your-local-ip-address/

В комментариях также есть обсуждение решения anshul.

2
ответ дан 6 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: