Linux shell 獲取內網ip 終極方法

2021-10-25 00:11:54 字數 1685 閱讀 9857

machine_physics_net=$(ls /sys/class/net/ | grep -v "`ls /sys/devices/virtual/net/`");

local_ip=$(ip addr | grep "$machine_physics_net" | awk '/^[0-9]+: / {}; /inet.*global/ ');

在部署的時候需要獲取內網ip

ip addr | awk '/^[0-9]+: / {}; /inet.*global.*eth/ '
效果不錯,但是這個只能搜尋網絡卡字首是eth,在別的環境下行不通,在新環境中發現網絡卡字首為ens這樣簡單判斷一下

local_ip_eth0=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global.*eth/ ')

local_ip_ens33=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global.*ens/ ')

if [ -n "$local_ip_eth0" ];then

local_ip="$local_ip_eth0"

else

local_ip="$local_ip_ens33"

fi

但是後面又在新環境,發現網絡卡字首為ena,且還有很多虛擬網絡卡。

最後方法為找到所有物理網絡卡,然後再在ip addr中找到ip

machine_physics_net=$(ls /sys/class/net/ | grep -v "`ls /sys/devices/virtual/net/`");

local_ip=$(ip addr | grep "$machine_physics_net" | awk '/^[0-9]+: / {}; /inet.*global/ ');

如果有多張網絡卡,並且繫結多個網絡卡繫結了ip,則視情況選擇,我選擇了第乙個,命令head -1最終的指令碼**如下:

獲得物理網絡卡

machine_physics_net=$(ls /sys/class/net/ | grep -v "`ls /sys/devices/virtual/net/`");

#先過濾網絡卡,在查詢ip,不要再awk中過濾網絡卡

local_ip=$(ip addr | grep $machine_physics_net | awk '/^[0-9]+: / {}; /inet.*global/ ' | head -1);

echo $local_ip;

debian-x86結果

前端獲取內網IP

個人blog,歡迎關注加收藏 定義函式 獲取內網ip getips if 1 window.mozrtcpeerconnection rtc.onicecandidate function evt rtc.createoffer function offerdesc function e var a...

ansible 獲取內網 IP

由於線上機器是多家廠商的且網絡卡會有公網ip和內網ip都繫結情形,並且有些服務必須保證監聽內網ip,但在host清單檔案配置中有可能是內網ip,也有可能是公網ip。使用 變數 會獲取機器所有ip,但沒有排序 使用 變數 則是網絡卡預設ip,經驗證此時有可能是內網ip也有可能是公網ip 安裝 neta...

xss實現獲取內網ip

前提得瀏覽器支援webrtc,測試的時候google瀏覽器測試成功,火狐瀏覽器不支援webrtc,再在xss平台直接複製如下js 1 function form ip ip,port 8function getips callback 10var rtcpeerconnection window.r...