自分のIPアドレスを取得する方法
そもそも複数のインターフェースを持っている場合、どれがインターネットに接続されているのかは分からない。
極端な話をすれば、すべて仮想のネットワークで隔離されている可能性もある。
ip addr, ifconfig, hostname -I は、複数のアドレスが返ってくることがあるので安定的に使えない。
現在、最も確実に接続できそうなインターフェースを考えると 8.8.8.8 (Google Public DNS) になる。
ip route get 8.8.8.8 が今のところ鉄板か。(ルーティングのみなので、パケットは飛ばない)
ip route get 8.8.8.8 | sed -n '/src/{s/.*src *\([^ ]*\).*/\1/p;q}'
ただし、この方法は自分のインターフェースのIPアドレスで、外から見たIPアドレスではない。
関連
参考