LINUX.ORG.RU

NetworkManager - узнать активный интерфейс


0

1

Как узнать из Bash-скрипта текущий активный сетевой интерфейс? Точнее не просто активный, а используемый в данный момент (если подключено несколько).

Например, если подключен только Wi-Fi, то я должен получить строку «wlan0», если подключен 3G-модем или VPN,то «ppp0». Если подключен одновременно 3G модем и Wi-Fi, то опять «wlan0» (потому что NetworkManager отдаёт приоритет Wi-Fi, вместо модема).

★★★★★
Ответ на: комментарий от SoulThreads

Он их просто вывел в алфавитном порядке:

$ nmcli -t -f DEVICE dev
eth0
wlan0
При том, что активен Wi-Fi, а кабельного подключения в текущий момент нет вообще.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

При том, что активен Wi-Fi, а кабельного подключения в текущий момент нет вообще.

Не путай состояние интерфейса и его «активность». Даже если шнурок с эзернета выдернут, интерфейс активен, через него можно отправлять пакеты и т.п.

Потому как есть например бриджи например (brctl show), или тунели (tunX), а тот же IP-в-IP туннель может быть активен с точки зрения системы, но на другом конце никто не слушает - это активный интерфейс или нет, по твоей логике?

Так что ls /sys/class/net и не впадай в «ересь чайника».

no-dashi ★★★★★
()
$ LC_ALL=C nmcli dev 
DEVICE     TYPE              STATE        
eth0       802-3-ethernet    unavailable  
wlan0      802-11-wireless   connected
$ LC_ALL=C nmcli dev | grep connected | cut -d " " -f 1
wlan0
$ ip r l | grep default | cut -d " " -f 5 # не самый надежный способ, но проверить сойдет
wlan0
madgnu ★★★★★
()
Ответ на: комментарий от madgnu

Спасибо, это как раз то что мне нужно.

KivApple ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.