ipコマンドでIPアドレスだけを取得するシンプルな方法を考える
|どうでもいい話シリーズ。
「
net-tools
はメンテされなくなってるから、おまえらもう
ifconfig
とか使うなコルア!」
と言われ、「 iproute2
使いにあらざれば人にあらず」的な風潮の中、みなさまいかがお過ごしのことでしょう。わたしは 2ちゃんの fusianasan を使います(うそ)。
ぼくのような惰弱な人間は iproute2
さまのような高等なコマンドを使うことはほとんどないのですが一点。 自分のIPアドレスだけは調べたい! なおかつIPアドレスだけをパッと表示してほしい!
まあ、もともと ifconfig
でも
# ifconfig
127.0.0.1
なんてお気軽な使い方はできなかったし、「じゃあ /proc ファイルシステムになんかあるのかな」と思っても存在しないし。別に環境が悪くなるわけじゃないんだけど。
とはいえ iproute2
の新しい ip
コマンドでは「 ip
コマンドって言うくらいなんだからカンタンにIPアドレスが出るんでしょ?」とか期待させられちゃうよね。よし! 実行! …とやると、
# ip
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
netns | l2tp | tcp_metrics | token }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-f[amily] { inet | inet6 | ipx | dnet | bridge | link } |
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } |
-o[neline] | -t[imestamp] | -b[atch] [filename] |
-rc[vbuf] [size]}
とか言ってくるツンデレ娘でした。デレたところはまだ見たことないニャー。
しかたないので、こいつのオプションを使ってなんとかIPアドレスだけを取得できないかを調べてみるものの…。
# ip --oneline --family inet address show dev eth0
2: eth0 inet 192.168.10.30/24 brd 192.168.10.255 scope global eth0 valid_lft forever preferred_lft forever
…すみません。先生ここまでで限界です。おれが欲しいのはアドレスだけなんだあああ!
あきらめて bashのコマンドラインワンライナーでごまかす(実際には途中の改行はありません)。
# echo $(ip --oneline --family inet address show dev eth0)
| cut -d' ' -f4
| cut -d'/' -f1
192.168.10.30
やったぁ!
とはいえ、どう考えても4つもプロセス走らせて資源の無駄遣いきわまりないなあ。きっと世の中にはもっとうまいやり方があるのだろう。
あれね。 /etc/sysconfig/network-scripts/ifcfg-eth0
見ろとかいうのなしね。