linuxで自分のIPアドレス文字列を抽出するための13のコマンド
非常に細かい小ネタ。
ツールやスクリプトを書いていると、自サーバーのIPアドレスの文字列部分だけをパースして取得したくなることは結構あります。
ただ、パースとかめんどくさいので毎回考えるのが億劫になってしまいます。
今回はIPアドレス文字列を抽出するためのコマンドを13個紹介します。
- NICがdownしたときにどうなるか等、詳細な動作確認はしてませんので、自己責任でご利用ください。
- コマンドによってチェックがゆるかったり厳しかったりしますがご愛嬌ということで。
- 「こっちのコマンドの方がいいよ!」という方はコメント頂ければ追加しますのでぜひ突っ込みください。
hostname系
自身のホスト名で名前解決できる場合、ホスト名からIPアドレスをひいてくると手っ取り早いです。
ただし、NICを指定してIPアドレスを取得したい場合、環境の制約で名前解決できない場合は不向きです。
シンプルなhostname
$ hostname -i
hostnameとcutの合わせ技
// eth0 $ hostname -I | cut -f1 -d' ' // eth1 $ hostname -I | cut -f2 -d' '
hostnameとawkの合わせ技
$ hostname -I | awk -F" " '{print $1}'
hostコマンド使用
$ host `hostname` | awk '{print $4}'
ifconfig系
経験あるインフラエンジニアなら、昔から慣れたifconfigコマンドを使う方法がなじみ深いでしょう。
ifconfigとawkの合わせ技その1
$ ifconfig eth0 | awk '/inet / {print $2}' | awk -F: '{print $2}'
ifconfigとawkの合わせ技その2
$ ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | awk -F: '{print $2}' | awk '{print $1}' | head -1
ifconfigとgrep/cutの合わせ技
$ ifconfig | grep -A 1 'eth0' | tail -1 | cut -d ':' -f 2 | cut -d ' ' -f 1
ip系
ifconfigとか使っているのはオッサンだけだってばよ とのことなので、若者向けにipコマンドを使ったパターンをば。
ipとcutの合わせ技
$ ip -f inet -o addr show eth0|cut -d\ -f 7 | cut -d/ -f 1
ipとgrepの合わせ技
$ ip addr show eth0 | grep -o 'inet [0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+' | grep -o [0-9].*
番外編
AWS EC2 metadata
$ wget -q -O - http://169.254.169.254/latest/meta-data/local-ipv4
AWS EC2 metadata (Public IP)
$ wget -q -O - http://169.254.169.254/latest/meta-data/public-ipv4
Public IP (checkip)
$ wget -q -O - http://checkip.amazonaws.com/
Public IP (ipecho)
$ wget -q -O - http://ipecho.net/plain
トラックバックはまだありません。