![](/img/trans.png)
[英]How to printk with IP address or MAC address in Linux Kernel Source Code
[英]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.