Linux
Network

Linuxでインターネットに接続しているIPアドレスを調べるワンライナー

ifconfigip address だとループバックなど複数のネットワークインタフェースの情報が表示されるので、そのうちのどれがインターネットに接続しているものなのかを特定するのがちょっと面倒。

いろいろ調べた結果、以下のようにするのがよさそう。

ip route get 8.8.8.8 | head -1 | awk '{print $7}'

補足

$ ip route get 8.8.8.8
8.8.8.8 via 192.168.11.1 dev enp0s31f6 src 192.168.11.105 uid 1000 
    cache 

これで8.8.8.8 につながるときの経路のIPアドレスがわかる。
複数ある場合があるので、head -1 で最初のひとつに絞る。
awkで7番目のフィールドだけ取り出す。