簡體   English   中英

ip和mac地址linux

[英]ip and mac address linux

我想在Linux終端中獲取IP地址和Mac地址作為輸出。

我不想在IP地址前添加“ addr”。 mac地址必須采用以下格式: 000C29DDED7C (不帶“:”,且全部大寫)

我嘗試了這個:

echo "ip-address: `/sbin/ifconfig | head -2 | grep 'inet ' | tr -s ' ' | cut -d' ' -f3` mac-address: `/sbin/ifconfig | head -1 | tr -s ' ' | cut -d' ' -f5 | tr ':' ' ' | tr 'a-z' 'A-Z'`"

給我:

ip-address: addr:192.168.8.141 mac-address: 00 0C 29 AC 3C 02

使用egrep獲取IP地址:

ifconfig|egrep -o "([0-9]+\.){3}[0-9]+"

獲取不帶子網掩碼,不帶“ addr:”的ips地址:

ifconfig|egrep -o "addr:([0-9]+\.){3}[0-9]+"|sed "s/addr://g"

獲取mac地址:

ifconfig|egrep -o "HWaddr [A-Za-z0-9:]+"|sed "s/HWaddr\ //"

您可以將每個命令的輸出捕獲到變量中以根據需要進行打印:

interfaceNum=1
ip=$(/sbin/ifconfig|egrep -o "addr:([0-9]+\.){3}[0-9]+"|sed -n "s/addr://g;${interfaceNum}p")
mac=$(/sbin/ifconfig|egrep -o "HWaddr [A-Za-z0-9:]+"|sed -n "s/HWaddr\ //g;${interfaceNum}p")
echo "ip=$ip, mac=$mac"

或使用sed:echo“ ip-address: /sbin/ifconfig | head -2 | grep 'inet ' | tr -s ' ' | cut -d' ' -f3 mac-address: /sbin/ifconfig | head -1 | tr -s ' ' | cut -d' ' -f5 | tr ':' ' ' | tr 'az' 'A-Z' “ | sed -e's / addr:// g'

這個awk可以做到:

$ ifconfig | tr -s ' ' | awk -F" |addr:" 'NR==1 {gsub(":", "", $5);mac=toupper($5)} NR==2 {ip=$4} END{print "ip-address ==> " ip " mac ==> " mac}'
ip-address ==> 192.168.8.141 mac ==> 000C29AC3C02
  • 正如您已經做過的那樣, tr -s ' '壓縮多個空格。
  • awk -F" |addr:"將字段定界符設置為“ addr:”或空格。
  • NR==1 {gsub(":", "", $5);mac=toupper($5)} ,根據上述定界符將mac作為第5個值。 以前,冒號被刪除。
  • NR==2 {ip=$4} ,根據上述定界符將ip作為第4個值。
  • END{print "ip-address ==> " ip " mac ==> " toupper(mac)}'打印結果,其中mac為大寫。

您可以在兩個位置添加sed,這將刪除“ addr:”和MAC地址之間的空格。

下面是整個命令

echo "ip-address: `/sbin/ifconfig | head -2 | grep 'inet ' | tr -s ' ' | sed 's/addr://g' |cut -d' ' -f3` mac-address: `/sbin/ifconfig | head -1 | tr -s ' ' | cut -d' ' -f5 | tr ':' ' ' |tr 'a-z' 'A-Z'|sed 's/ //g'`"

該命令的輸出是

ip-address: 10.137.108.181 mac-address: AC162D72A875

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM