1. 程式人生 > 其它 >Linux Shell指令碼中獲取本機ip地址方法

Linux Shell指令碼中獲取本機ip地址方法

方法一:ifconfig -a

ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

  

命令解析

  •  ifconfig -a       和window下執行此命令一樣道理,返回本機所有ip資訊
  •  grep inet                   擷取包含ip的行
  •  grep -v 127.0.0.1      去掉本地指向的那行
  •  grep -v inet6             去掉包含inet6的行
  •  awk { print $2}         $2 表示預設以空格分割的第二組 同理 $1表示第一組​
  •  tr -d "addr:               刪除"addr:"這個字串

多網絡卡情況

倘若有多個網絡卡,可能會出現多個不同網段的IP,這個時候如果還是執行上述命令就會返回多個IP,如下:

假設某個機器有192.*.*.8和10.*.*.*網段的IP,現在要實現不同網段的IP地址列印不同的輸出,shell指令碼如下

#!/bin/sh
ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`
echo $ip
if[[ $ip =="10."*]]
then
echo "該網段是10.*.*.*網段"
else
echo "該網段是192.*.*.*網段"
fi

  

方法二:ip addr

 ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}'