В Ruby, как получить свой октет IP без прохождения через DNS? - PullRequest
0 голосов
/ 19 декабря 2008

В некоторых моих системах я могу получить свой IP-адрес (формат 192.68.m.n), выполнив следующее:

addr = IPSocket::getAddress(Socket.gethostname())

... проблема в том, что это работает, только если имя, которое локальный компьютер использует для себя, является именем, которое DNS-сервер связывает с ним.

Как * & # (сложно ли ruby ​​просто вернуть IP-адрес своего основного интерфейса? Я должен сделать это независимым от платформы способом, или я бы просто позвонил ifconfig или ipconfig и проанализировал его.

Ответы [ 2 ]

4 голосов
/ 19 декабря 2008

См. этот вопрос . Также see Socket.getaddrinfo()

0 голосов
/ 24 апреля 2010

Как насчет этого

require 'socket'
ipaddr = UDPSocket.open {|s| s.connect('65.59.196.211'); s.addr.last }

IP-адрес может быть любым реальным (это я получил для stackoverflow.com), но это должен быть IP-адрес, доступный на интерфейсе, для которого вы хотите получить IP-адрес. Поскольку это сокет UDP, на самом деле соединение не предпринимается, но он пытается выяснить, какой интерфейс использовать.

...