Обнаружение имени сетевого устройства в bash?

12

Я пытаюсь получить взломать, который будет выводить имя активных сетевых устройств на компьютер через bash. Я делаю это для работы. Как мне это сделать? Я не хочу просто использовать "wlan0" или "eth0" или что-то из этого общего дерьма, потому что некоторые ОС используют разные имена (например, pfSense).

Brandon
источник

Ответы:

28

Это зависит от того, что вы подразумеваете под «активным» - если вы просто хотите увидеть имена всех сетевых устройств в системе, вы можете посмотреть содержимое каталога / sys / class / net, например:

$ ls /sys/class/net
eth0  lo  wlan0

Чтобы увидеть статус, вы можете использовать ipкоманду для любых linkобъектов - вы можете проанализировать вывод, чтобы получить конкретные поля, которые вы хотите, например, чтобы увидеть только имя устройства и состояние

$ ip -o link show | awk '{print $2,$9}'
lo: UNKNOWN
eth0: DOWN
wlan0: UP

Если вы используете современную настольную версию Ubuntu (с интерфейсами, управляемыми службой сетевого менеджера), то вы сможете получить аналогичный список состояния устройства, используя nmcli

$ nmcli dev status
DEVICE     TYPE              STATE
wlan0      802-11-wireless   connected
eth0       802-3-ethernet    unavailable

или, чтобы ограничить вывод определенными полями таким образом, чтобы его было проще использовать в скрипте

$ nmcli --terse --fields DEVICE,STATE dev status
wlan0:connected
eth0:unavailable

Если вы используете сетевой менеджер, вы также можете получить доступ к устройству и свойствам подключения через DBUS - см., Например, учебное пособие по Dbus - Fun with Network Manager

steeldriver
источник
2

Вы можете использовать ifconfigдля обнаружения активных сетевых устройств, для небольшого использования вывода ifconfig -s. ifconfigраспечатывает активные интерфейсы, при этом -aвы можете распечатать все интерфейсы, которые распознаются системой как сетевые интерфейсы.

Или используйте ip addr.

хаос
источник
0

Возможно, я не знаю ответа напрямую, но я дам вам список сетевых команд, и, возможно, оттуда вы можете попробовать связать его с тем, что вам нужно сделать.

Чтобы просмотреть сети и вывести имя активных сетевых устройств на одном компьютере, вы можете попробовать следующие команды:

ifconfig

Эта команда позволяет нам обнаруживать активные сетевые устройства. Вы также можете использовать команду ifconfig -s для меньшего использования вывода. Вы можете использовать эту команду для настройки определенного интерфейса

ip addr

Эта команда позволяет нам просматривать информацию о сети.

tcpdump

Эта команда является сетевым анализатором. Что он делает, так это захватывает пакеты с сетевого интерфейса и интерпретирует их для вас.

Если вы когда-нибудь получите сообщение об отказе в разрешении, просто: **gksu yourcommand**чтобы получить права доступа root и принудительно ввести команду.

findsmb

Вы можете использовать эту команду для вывода информации о компьютерах, которые отвечают на запросы имен SMB.

Источник: http://www.gymforgeeks.com/topic/358445-/

Майк Вентворт
источник