Опитвам се да напиша bash скрипт, за да извлека ethernet порта на интерфейс, чийто IP адрес знам. Трябва да взема това от ifconfig, но изглежда не мога да разбера как да го направя. Някакви идеи?
Благодаря.
Опитвам се да напиша bash скрипт, за да извлека ethernet порта на интерфейс, чийто IP адрес знам. Трябва да взема това от ifconfig, но изглежда не мога да разбера как да го направя. Някакви идеи?
Благодаря.
Малко объркан, но трябва да работи:
/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}'
Заменете 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 картата, свързана с този интерфейс
На върха на главата ми може да използвам 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 отстъпва всички редове с изключение на реда с името на интерфейса, той ще съответства само на името на интерфейса.
Това е бързо и мръсно, но трябва да работи.