Linux Shell指令碼中獲取本機ip地址方法
阿新 • • 發佈:2022-05-30
方法一: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)}'