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