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
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
На самом деле намного читаемее как-нибудь так:
cat /proc/net/dev | awk '$1 ~ /^eth|^em|^wlan/ && $2 > 0 { print substr($1, 1, length($1)-1); }'
или то же самое на любом другом языке.
Reply
Reply
grep -oP '^\s*((eth|em)\d+)(?!:0)' /proc/net/dev | tr -d ' '
Reply
ну нельзя же спорить с тем, что $2 > 0 всегда читаемее, чем zero-width negative look-ahead с ноликом
Reply
Я чёто п просто - вроде бы задача тривиальная, а пришлось напрячься.
Reply
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