私はUbuntu12.04LTSOSでRails開発を行っています。
を使用して取得したループバック127.0.0.1ではなく、ローカルIPアドレスをファイルにキャプチャしたいと思いますifconfig
。解決策を提案してください。
私はUbuntu12.04LTSOSでRails開発を行っています。
を使用して取得したループバック127.0.0.1ではなく、ローカルIPアドレスをファイルにキャプチャしたいと思いますifconfig
。解決策を提案してください。
Socket::ip_address_listを使用します。
Socket.ip_address_list #=> Array of AddrInfo
これが私の最初の方法です。
require 'socket'
def local_ip
orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily
UDPSocket.open do |s|
s.connect '64.233.187.99', 1
s.addr.last
end
ensure
Socket.do_not_reverse_lookup = orig
end
# irb:0> local_ip
# => "192.168.0.127"
これは私の2番目の方法であり、お勧めしません。
require 'socket'
Socket::getaddrinfo(Socket.gethostname,”echo”,Socket::AF_INET)[0][3]
3番目の方法:
UDPSocket.open {|s| s.connect('64.233.187.99', 1); s.addr.last }
そして4番目の方法:
Use Socket#ip_address_list
Socket.ip_address_list #=> Array of AddrInfo
以下の方法で書く
def self.local_ip
orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true
UDPSocket.open do |s|
s.connect '64.233.187.99', 1
s.addr.last
end
ensure
Socket.do_not_reverse_lookup = orig
end
次にlocal_ipメソッドを呼び出すと、マシンのIPアドレスが取得されます。
Eg: ip_address= local_ip