Вопрос или проблема
Можно ли распечатать статус устройства enp0s9 без использования egrep?
$ nmcli device status
DEVICE TYPE STATE CONNECTION
enp0s3 ethernet connected Wired connection 1
enp0s9 ethernet connected Wired connection 2
lo loopback unmanaged --
$
Я хочу получить аналогичный вывод, используя только команду nmcli
и не прибегая к внешним командам, таким как egrep
$ nmcli device status | egrep 'D|9'
DEVICE TYPE STATE CONNECTION
enp0s9 ethernet connected Wired connection 2
$
Просто чтобы помочь другим, кто придет через год после вопроса…
[user@host]# nmcli -g general.state device show enp0s9
100 (connected)
nmcli показывает одну строку данных за раз.
Чтобы получить те же данные, которые вы предоставили, используйте следующий способ:
[user@host]# nmcli -m multiline -g general.device,general.type,general.state,general.connection device show eth0
GENERAL.DEVICE:enp0s9
GENERAL.TYPE:ethernet
GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:Wired connection 2
Удалив -m multiline
, вы получите формат по умолчанию без префикса ключевых слов:
[user@host]# nmcli -g general.device,general.type,general.state,general.connection device show eth0
enp0s9
ethernet
100 (connected)
Wired connection 2
Исключение опции -g general.state даст вам все доступные данные, такие как:
[user@host]# nmcli device show eth0
GENERAL.DEVICE: enp0s9
GENERAL.TYPE: ethernet
GENERAL.HWADDR: B6:20:89:30:E8:03
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: Wired connection 2
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 10.10.0.100/16
IP4.GATEWAY: 10.10.0.1
IP4.ROUTE[1]: dst = 10.10.0.0/16, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.10.0.1, mt = 100
IP4.DNS[1]: 1.1.1.1
IP4.DNS[2]: 1.1.1.2
IP6.ADDRESS[1]: fe80::652c:ff98:a178:aa73/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
Ответ или решение
Чтобы отобразить статус конкретного интерфейса, например, enp0s9, с помощью команды nmcli
, вы можете использовать встроенные функции этой утилиты и обойтись без использования внешних команд вроде egrep
. Эта задача может быть выполнена несколькими способами, в зависимости от уровня детализации информации, которую вы хотите получить.
Способ 1: Краткая информация о состоянии устройства
Чтобы получить базовую информацию о состоянии соединения, воспользуйтесь следующей командой:
nmcli device show enp0s9 | grep 'GENERAL\.DEVICE\|GENERAL\.TYPE\|GENERAL\.STATE\|GENERAL\.CONNECTION'
Эта команда выведет линейные данные без использования внешних фильтров, таких как grep
, но вы также можете использовать встроенные возможности nmcli
.
Способ 2: Информация в кратком формате
Если вы хотите показать информацию более структурированно, примените флаг -g
для указания нужных параметров и получите вывод без префиксов:
nmcli -g GENERAL.DEVICE,GENERAL.TYPE,GENERAL.STATE,GENERAL.CONNECTION device show enp0s9
Эта команда предоставит четкое указание на имя устройства, тип соединения, его состояние и активное подключение.
Способ 3: Подробная информация обо всех параметрах интерфейса
Если требуется более полная информация, вы можете использовать команду без указания полей для фильтрации:
nmcli device show enp0s9
Этот подход выводит все доступные параметры для интерфейса enp0s9, включая аппаратный адрес (HWADDR), MTU, маршруты IP4/IP6 и DNS.
Заключение
Оптимальная команда зависит от ваших конкретных нужд в получении информации о сетевом устройстве. Использование nmcli
позволяет гибко и эффективно управлять сетевыми подключениями в Linux-окружении, избегая зависимости от сторонних инструментов для фильтрации данных. Не забывайте, что корректное управление сетями — это ключевая часть обеспечения стабильной работы вашей IT-инфраструктуры.