Первый линукса псто!

Apr 25, 2013 03:54

Нати все живые сетевые интерфейсы (считаю, что они называются ethX или emX):

cat /proc/net/dev | perl -pe 's/:\s+/:/' | awk '{print $1;}' | egrep '^(eth|em)[[:digit:]]' | egrep -v ':0$' | awk -F ':' '{print $1;}'

В выводе миожет быть и опущенный интерфейс, если он был ранее поднят. Если нужно, state можно уже отдельно проверять.

linux

Leave a comment

lixter April 25 2013, 04:12:34 UTC
чо-то ваще усложняешь
cat /proc/net/dev | grep -oP '^\s*(eth|em)\d+'
или, если ещё пробелы убрать надо
cat /proc/net/dev | grep -oP '^\s*(eth|em)\d+' | sed -e 's/^\s*//'
(да и наверняка вот эти пробелы в начале можно убрать в grep, с помощью (?:...) или подобного)

Reply

fenster April 25 2013, 10:47:22 UTC
Костя, ему же нужны живые, т.е. те, через которые байтики текли. Он там поэтому делает grep -v ноль-первой-цифрой.

На самом деле намного читаемее как-нибудь так:

cat /proc/net/dev | awk '$1 ~ /^eth|^em|^wlan/ && $2 > 0 { print substr($1, 1, length($1)-1); }'

или то же самое на любом другом языке.

Reply

fenster April 25 2013, 10:47:59 UTC
wlan добавил, чтобы у себя на ноуте затестить, да

Reply

lixter April 25 2013, 11:09:17 UTC
ты тоже усложняешь
grep -oP '^\s*((eth|em)\d+)(?!:0)' /proc/net/dev | tr -d ' '

Reply

fenster April 25 2013, 11:25:41 UTC
билят, у нас тут решение задачи или чемпионат по обфускации кода? )
ну нельзя же спорить с тем, что $2 > 0 всегда читаемее, чем zero-width negative look-ahead с ноликом

Reply

valerius April 25 2013, 21:51:06 UTC
После того, как есть /proc/net/dev и понятно, как парсить, уже не сильно важно.
Я чёто п просто - вроде бы задача тривиальная, а пришлось напрячься.

Reply

lixter April 26 2013, 05:45:25 UTC
да ты сам-то на эти две строки посмотри :)
cat /proc/net/dev | awk '$1 ~ /^eth|^em|^wlan/ && $2 > 0 { print substr($1, 1, length($1)-1); }'
grep -oP '^\s*((eth|em)\d+)(?!:0)' /proc/net/dev | tr -d ' '
Но что-то мне подсказывает, что мы сейчас в дело вкуса уткнёмся =)

Reply


Leave a comment

Up