Linux - Shell 腳本中獲取本機 ip 地址方法


方法一:ifconfig -a

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

 

命令解釋

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

 

多網卡情況

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

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

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

 

方法二:ip addr

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

這里涉及awk命令,暫不展開詳講,后面會專門有一篇介紹awk命令的文章哦    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM