Détecter le nom d'un périphérique réseau dans bash?

12

J'essaie de créer un hack qui affichera le nom des périphériques réseau actifs sur son ordinateur via bash. Je le fais pour le travail. Comment dois-je procéder? Je ne veux pas simplement utiliser "wlan0" ou "eth0" ou n'importe quoi de cette merde générique parce que certains systèmes d'exploitation utilisent des noms différents (comme pfSense par exemple).

Brandon
la source

Réponses:

28

Cela dépend de ce que vous entendez par «actif» - si vous voulez simplement voir les noms de tous les périphériques réseau sur le système, vous pouvez regarder le contenu du répertoire / sys / class / net par exemple

$ ls /sys/class/net
eth0  lo  wlan0

Pour voir l'état, vous pouvez utiliser la ipcommande sur n'importe quel linkobjet - vous pouvez analyser la sortie pour obtenir les champs particuliers que vous souhaitez, par exemple pour voir uniquement le nom et l'état de l'appareil

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

Si vous exécutez une version de bureau moderne d'Ubuntu (avec des interfaces gérées par le service de gestionnaire de réseau), vous devriez pouvoir obtenir une liste d'état de périphérique similaire en utilisant nmcli

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

ou, pour limiter la sortie à des champs particuliers d'une manière plus facile à utiliser dans un script

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

Si vous utilisez un gestionnaire de réseau, vous pouvez également accéder aux propriétés de l'appareil et de la connexion via DBUS - voir par exemple Tutoriel Dbus - Amusez-vous avec Network Manager

tournevis
la source
2

Vous pouvez utiliser ifconfigpour détecter les périphériques réseau actifs, pour une utilisation de sortie un peu plus petite ifconfig -s. ifconfigimprime les interfaces actives, -avous pouvez imprimer toutes les interfaces reconnues par le système comme des interfaces réseau.

Ou utilisez ip addr.

le chaos
la source
0

Je ne connais peut-être pas la réponse directement, mais je vais vous donner une liste de commandes réseau et peut-être à partir de là, vous pouvez essayer de la connecter avec ce que vous devez faire.

Pour afficher les réseaux et pour afficher le nom des périphériques réseau actifs sur un seul ordinateur, vous pouvez essayer les commandes suivantes:

ifconfig

Cette commande nous permet de détecter les périphériques réseau actifs. Vous pouvez également utiliser la commande ifconfig -s pour une utilisation de sortie plus petite. Vous pouvez utiliser cette commande pour configurer une interface particulière

ip addr

Cette commande nous permet d'afficher les informations réseau du réseau.

tcpdump

Cette commande est un renifleur de réseau. Ce qu'il fait, c'est qu'il capture les paquets d'une interface réseau et les interprète pour vous.

Si vous obtenez un message d'autorisation refusée, simplement: **gksu yourcommand**pour qu'il obtienne les autorisations root et force la commande.

findsmb

Vous pouvez utiliser cette commande pour répertorier les informations sur les machines qui répondent aux requêtes de nom SMB.

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

Mike Wentworth
la source