Как мога да извлека ethernet порта предвид ip адреса?

Опитвам се да напиша bash скрипт, за да извлека ethernet порта на интерфейс, чийто IP адрес знам. Трябва да взема това от ifconfig, но изглежда не мога да разбера как да го направя. Някакви идеи?

Благодаря.


person fzkl    schedule 13.02.2011    source източник


Отговори (3)


Малко объркан, но трябва да работи:

/sbin/ifconfig | grep -B1 1.2.3.4 | awk '{print $1; exit}'

По желание можете да използвате командата ip, която, когато се използва с опцията -o|-oneline, е много по-лесно за анализиране. Например

ip -o addr | awk '/1.2.3.4/{print $2}'
person Shawn Chin    schedule 13.02.2011

Заменете 127.0.0.1 с ip адреса, за който искате да получите информация за интерфейса

ifconfig  | grep 127.0.0.1 -B1 | grep Link | cut -f 1 '-d '

Ако също искате да идентифицирате физическия порт на машината, стартирайте

ethtool -p $OUTPUT_OF_FIRST_COMMAND

Ще мига светлината на Ethernet картата, свързана с този интерфейс

person Nick    schedule 13.02.2011

На върха на главата ми може да използвам grep:

ifconfig |grep -B1 '127.0.0.1' |grep -o '^[a-zA-Z0-9]*'  

Където „127.0.0.1“ е адресът, който търсите.

-B1 задава броя на редовете, предхождащи съвпадението, което да се върне.

-o настройва втория grep да връща само съответстващия сегмент, вместо целия ред.

'^[a-zA-Z0-9]*' съответства на всички буквено-цифрови знаци, които започват в началото на реда.

Тъй като ifconfig отстъпва всички редове с изключение на реда с името на интерфейса, той ще съответства само на името на интерфейса.

Това е бързо и мръсно, но трябва да работи.

person d_b    schedule 13.02.2011