Существует ли простой способ в Ruby для меня для получения списка IP-адресов для всех сетевых интерфейсов? Это должно работать в Linux/Win/OSX, и я предпочел бы не должным быть анализировать ifconfig/ipconfig, если я абсолютно не имею к.
Я не думаю, что у ruby есть стандартный api для этого, но при некоторых предположениях это должно быть достаточно надежным для разных платформ:
require 'socket'
Socket::getaddrinfo(Socket.gethostname, 'echo', Socket::AF_INET).map { |x| x[3] }
Здесь мы предполагаем довольно много вещей, например, что у машины есть локальное имя хоста, указывающее на правильный IP-адрес. адреса. Таким образом, это определенно не совсем надежно, но оно не зависит от платформы и работает на общих настройках.
Редактировать: Если вы решите приступить к синтаксическому анализу ifconfig, подумайте о разветвлении ruby-ifconfig . Он утверждает, что делает это уже на большинстве платформ, отличных от Windows.
Посмотрите следующий пост:
http://coderrr.wordpress.com/2008/05/28/get-your-local-ip-address/
В комментариях также есть обсуждение решения anshul.