2013-11-20 8 views
1

Я хочу получить ip-адрес и mac-адрес как вывод в терминале linux.ip и mac адрес linux

Я не хочу 'addr' перед ip-адресом. 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

Вы можете добавить 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 
0

Получение ips адрес с egrep:

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

Получение th е изобр адрес без маски подсети, без «адр:»:

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

Или использовать СЭД: эхо "IP-адрес: /sbin/ifconfig | head -2 | grep 'inet ' | tr -s ' ' | cut -d' ' -f3 MAC-адрес: /sbin/ifconfig | head -1 | tr -s ' ' | cut -d' ' -f5 | tr ':' ' ' | tr 'a-z' 'A-Z'" | СЕПГ -e 's/адр: // г'

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)} на линии 1, получить mac как 5-ое значение на основе вышеуказанного разделителя. Раньше двоеточия удалялись.
  • NR==2 {ip=$4} на линии 2, получить ip как 4-ое значение на основе вышеуказанного разделителя.
  • END{print "ip-address ==> " ip " mac ==> " toupper(mac)}' результат печати, с мак на верхний кейс.
Смежные вопросы