Linux ifconfigからgrepとsedを用いてipアドレスのみ取得する。
コマンド
# /sbin/ifconfig eth0 | grep 'inet addr:' | sed -e 's/^.*inet addr://' -e 's/ .*//'
結果
192.168.0.123
※良く忘れるので1ステップずつメモを残す。
eth0のip情報を表示 # /sbin/ifconfig eth0 eth0 Link encap:Ethernet HWaddr aa:bb:cc:dd:ee:ff inet addr:192.168.0.123 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:16910 errors:0 dropped:0 overruns:0 frame:0 TX packets:6693 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1421134 (1.3 MiB) TX bytes:2839384 (2.7 MiB)
ifconfigの結果をgrepコマンドに引き渡す。 先頭からinet addr:に一致する部分を検索する。 # /sbin/ifconfig eth0 | grep 'inet addr:' inet addr:192.168.0.123 Bcast:192.168.0.255 Mask:255.255.255.0 ※左側にスペースもあり
grepの結果をsedに引き渡す。 先頭から検索し、*.inet addr:にマッチする部分をカットします。 # /sbin/ifconfig eth0 | grep 'inet addr:' | sed -e 's/^.*inet addr://' 192.168.0.123 Bcast:192.168.0.255 Mask:255.255.255.0 ※スペースも削除された。
sedの結果を続けて処理。 半角スペース以降をカットします。 パイプ処理しなくても連続処理が可能。 # /sbin/ifconfig eth0 | grep 'inet addr:' | sed -e 's/^.*inet addr://' -e 's/ .*//' 192.168.0.123
スクリプト内での利用
ip_get.sh
#!/bin/sh # functionの戻り値として文字列を返す function func_get_ip(){ IP=`/sbin/ifconfig eth0 | grep 'inet addr:' | sed -e 's/^.*inet addr://' -e 's/ .*//'` echo $IP } # コマンド実行、結果を変数に保持 ip=`func_get_ip` echo $ip exit 0
実行
$ sh ./ip_get.sh 192.168.0.123