Detectando o nome de um dispositivo de rede no bash?

12

Estou tentando criar um hack que produzirá o nome de dispositivos de rede ativos no computador via bash. Eu estou fazendo isso para o trabalho. Como faço para fazer isso? Eu não quero simplesmente usar "wlan0" ou "eth0" ou qualquer uma dessas porcarias genéricas porque alguns sistemas operacionais usam nomes diferentes (como pfSense, por exemplo).

Brandon
fonte

Respostas:

28

Depende do que você quer dizer com 'ativo' - se você quiser apenas ver os nomes de todos os dispositivos de rede no sistema, pode ver o conteúdo do diretório / sys / class / net, por exemplo

$ ls /sys/class/net
eth0  lo  wlan0

Para ver o status, você pode usar o ipcomando em qualquer linkobjeto - você pode analisar a saída para obter os campos específicos que deseja, por exemplo, ver apenas o nome e o estado do dispositivo

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

Se você estiver executando uma versão moderna da área de trabalho do Ubuntu (com interfaces gerenciadas pelo serviço de gerenciamento de rede), poderá obter uma lista de status de dispositivo semelhante usando nmcli

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

ou, para limitar a saída a campos específicos de uma maneira que é mais facilmente usada em um script

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

Se você estiver usando o gerenciador de rede, também poderá acessar as propriedades do dispositivo e da conexão via DBUS - veja, por exemplo, Tutorial do Dbus - Diversão com o Network Manager

chave de aço
fonte
2

Você pode usar ifconfigpara detectar os dispositivos de rede ativos, para um uso de saída um pouco menor ifconfig -s. ifconfigimprime as interfaces ativas, com -avocê pode imprimir todas as interfaces reconhecidas pelo sistema como interfaces de rede.

Ou use ip addr.

caos
fonte
0

Talvez eu não saiba a resposta diretamente, mas darei uma lista de comandos de rede e talvez a partir daí você possa tentar conectá-la ao que precisa fazer.

Para exibir redes e exibir o nome de dispositivos de rede ativos em um único computador, você pode tentar os seguintes comandos:

ifconfig

Este comando nos permite detectar os dispositivos de rede ativos. Você também pode usar o comando ifconfig -s para uso de saída menor. Você pode usar este comando para configurar uma interface específica

ip addr

Este comando permite visualizar informações de rede da rede.

tcpdump

Este comando é um sniffer de rede. O que ele faz é capturar pacotes de uma interface de rede e interpretá-los para você.

Se você receber uma mensagem de permissão negada, simplesmente: **gksu yourcommand**para obter permissões de root e forçar o comando.

findsmb

Você pode usar este comando para listar informações sobre máquinas que respondem a consultas de nome SMB.

Fonte: http://www.gymforgeeks.com/topic/358445-/

Mike Wentworth
fonte