ip a コマンドでIPv4アドレスを取り出すスクリプト

超小ネタです。

ip a するとたくさんのアダプタとそれぞれのアドレスが一覧で表示されますが、このままだとスクリプトで再利用する際にはちょっと都合が悪いときのワンライナーです。

例えば wlan0 の IPv4アドレスを取り出したいときはこんなふうに書けます。

$ ip a dev wlan0 |grep inet | awk '{print $2}' | awk -F '/' '{print $1}'

分解すると ip a show dev wlan0| gerp inet ではこんな感じの値が取得できます。

inet 192.168.1.111/24 brd 192.168.1.255 scope global wlan0

1つ目の awk は2番めのトークンを切り出すので

192.168.1.111/24

を出力します。

2つ目の awk では / を区切り文字として 1 番めを取り出すので

192.168.1.111

が手に入ります。これをスクリプト変数なりにいれるとスクリプトで使いまわすことができます。

makefile で使うには $1 は $$1 にする必要がある。

もともと Android デバイスを WiFiデバッグ接続しようとして調べたのだが、そもそも Android デバイスの IP アドレスをネットワーク経由で知る方法がないので無駄だったかもしれない。(IP アドレスを知るために USB デバッグで接続する必要があるのでもうつながっている。)

とはいえ、ip コマンドからアドレスだけを取り出したいシーンは結構あるので覚えておこう

Android が avahi 対応してくれるといいのだけれど…。多分されないでしょうね。