現在のインターネット環境では自分のPCのIPはプライベートIPの場合が多いので、自分のPCにはグローバルIPは設定されていない。グローバルIPが設定されているのはその先のルーターなのでルーターから取得することもできるだろうが、ルーターはパスワードが必要なのでここではスルー。
http://checkip.dyndns.com/にアクセスするとアクセス元つまり自分のIPを返してくれる。よってここからIPを取得すればいい
1 |
ip=$(w3m -dump http://checkip.dyndns.com/ | grep -oP '\d+\.\d+\.\d+\.\d+') |
w3mはテキストブラウザ、-dumpは出力して終わる。-oはマッチした部分を返す。-PはPerl互換の正規表現。\dは数字にヒット+は連続の数字にヒット、\.は.をエスケープ。
なおこのスクリプトだとw3mがIPをいくつも返したとき全部取得してしまうので最初の1つだけを取得したい場合は head -n 1などをさらにパイプでつなげる。