
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アドレスを取得するよい方法はないでしょうか。
No.1ベストアンサー
- 回答日時:
Rubyは全くの初心者ですけど、やっつけ仕事でいいならこれでどうですか。
#!/usr/bin/ruby
`ifconfig eth0` =~ /inet ([\d\.]+)/;
printf("%s\n", $1)
No.2
- 回答日時:
そもそもIPアドレスは、ネットワークインタフェースに紐づくものなので、何をもって「自分のIPアドレス」とするかを明確化したほうがよいと思います。
一覧を取得するなら、回答No.1さんが書かれているように、ifconfigの出力を整形するのが一番手っ取り早いかと。
あるいは外部と通信するためのIPアドレスを指定したいということなら、デフォルトゲートウェイにつながるインタフェースを判別し、そのIPアドレスを取得するとか。
回答ありがとうございます。
自分が外部PCからアクセスされる際に使用するIPアドレスを取得したかったのです。
ifconfigの整形でうまくいきそうです。
rubyのSocketのAPIで何かいい手があるのではないかと思っていましたが、このようなIPアドレスを取得するというのは簡単そうで意外と難しいのですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
教えてください
-
ビーリアルのユーザー名を変え...
-
(再質問)エクセルのマクロボ...
-
Ruby require ライブラリー
-
プログラミングについてです。...
-
pythonエラー
-
VBScriptでExcel(2019)上のデー...
-
<python>ノイズを時間指定して...
-
エクセルvbaでチェックボックス...
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby require ライブラリー
-
ruby loopメソッド 変数(再喝)
-
(再質問)エクセルのマクロボ...
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数
-
1、Rstudioで回帰直線を求める...
-
パソコンのスクリーンセーバー...
-
ビーリアルのユーザー名を変え...
-
ruby 配列
-
C言語の入力した文字を反転させ...
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
100万件越えCSVから条件を満た...
-
ルビー言語 csvファイル 続き
-
Ruby newメソッド
-
教えてください
-
ruby raise句
-
英数字を含む文字列(0-9,A-Z)...
-
pythonエラー
おすすめ情報