網路上有許多教學告訴你如何透過ifconfig去取得ip address,而本篇教學主要分享我認為比較通用且簡單的做法。
取得interface list方法很多種,除了可以透過ifconfig、ip等command外,先前我們是透過cat /proc/net/dev的方式。但我認為透過list /sys/class/net的方法比較簡單且通用:
net_base=/sys/class/net/ for dev in ${net_base}*; do dev_name=${dev##*/} is_carrier=`cat ${dev}/carrier` echo ${dev_name} echo ${is_carrier} done有幾個部分需要注意的,以eth0為例:
許多教學都是透過ifconfig去達成,由於我們script需要能夠執行於Ubuntu Server的安裝環境下(無法用cut與awk),因此我使用ip command。
# 可在Ubuntu Server 14.04安裝環境下使用 ip addr show | grep -o 'inet [0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+' | grep -o [0-9].*如果要指定interface eth0:
ip addr show eth0
ipv6比較難寫,我改使用以下方法,將不需要的部分去頭去尾:
ip=`ip addr show eth0 | grep -o 'inet6 .*'` ip=${ip%%/*} ip=${ip#inet6 }