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...