2013-11-20 210 views
1

我想在ip終端上得到ip-address和mac-address作爲輸出。ip和mac地址linux

我不想在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 

回答

0

您可以在兩處刪除「addr:」和MAC地址之間的空格添加sed。

下面是整個命令這個命令的

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 
0

獲取ips地址爲egrep

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

獲得th Ë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" 
0

或使用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 'a-z' 'A-Z'」| SED -e 'S /地址:// G'

0

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)} on line 1,根據上述分隔符得到mac作爲第5個值。以前,冒號被刪除。
  • NR==2 {ip=$4}第2行,根據上面的分隔符得到ip作爲第4個值。
  • END{print "ip-address ==> " ip " mac ==> " toupper(mac)}'打印結果,帶有大寫的mac。