這是本文件的舊版!


取得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為例:

  • dev變數為/sys/class/net/eth0的完整路徑,因此透過${dev##*/}的方式刪除以/前最長的部分,即/sys/class/net/。
  • /sys/class/net/eth0/carrier如果在interface down的情況下,會出現如下圖錯誤;因此請先up後再做判斷。

許多教學都是透過ifconfig去達成,由於我們script需要能夠執行於Ubuntu Server的安裝環境下,因此我使用ip command。

ip addr show | grep -o 'inet [0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+' | grep -o [0-9].*
可在Ubuntu Server 14.04安裝環境下使用。