質問: 自分のipアドレスの取得方法 ubuntu 11.04でruby1.8.7を使用しています。 rubyで自分のipアドレスを取得したいのですがいい方法を見つけられません。 ifconfig -aではeth0のinet addrとして192.168.153.129が見えており、これを取得したいのです。 ネットで調べた ipsocket::getaddress(socket::gethostname) や socket.getaddrinfo(socket::gethostname, nil, socket::af_inet)[0][3] は、/etc/hostsに 「ip(192.168.153.129)」 「ホスト名」 を追加しておかないとうまくいかないようです(追加すればうまくいきます)。 /etc/hostsにはubuntuインストールのデフォルトとして 「ip(127.0.1.1)」 「ホスト名」 が記載されており、このままではうまくいかないようなのです。自分の環境だけであれば/etc/hostsを変更すればよいのですが、rubyプログラムを配布して別のホストで動かす際に、/etc/hostsの変更を依頼しなければいけないのがいやがられそうです。 /etc/hostsの変更なしに、自分のipアドレスを取得するよい方法はないでしょうか。
回答: rubyは全くの初心者ですけど、やっつけ仕事でいいならこれでどうですか。 #!/usr/bin/ruby `ifconfig eth0` =~ /inet ([\d\.]+)/; printf("%s\n", $1)