Je voudrais savoir lequel des services réseau disponibles (par exemple Ethernet ou Wi-Fi ) est actuellement actif. Dans cette capture d'écran des Préférences Réseau, vous pouvez voir que le Wi-Fi est actuellement actif (le point vert):
Comment puis-je obtenir ces informations à partir de la ligne de commande?
La networksetup
commande me permet de lister les services réseau disponibles:
$ networksetup -listallnetworkservices
An asterisk (*) denotes that a network service is disabled.
Ethernet
FireWire
Wi-Fi
Il peut également afficher certains détails sur le service, comme le nom de l'appareil:
$ networksetup -listnetworkserviceorder
An asterisk (*) denotes that a network service is disabled.
(1) Ethernet
(Hardware Port: Ethernet, Device: en0)
(2) FireWire
(Hardware Port: FireWire, Device: fw0)
(3) Wi-Fi
(Hardware Port: Wi-Fi, Device: en1)
Malheureusement, les informations sur le service actif (le point vert de la capture d'écran) ne sont pas disponibles dans ces informations. Existe-t-il une autre commande que je pourrais utiliser pour obtenir ces informations?
status
champ qui aactive
ouinactive
comme valeur.ifconfig | grep $(networksetup -listnetworkserviceorder | grep 'Ethernet, Device' | sed -E "s/.*(en[0-9]).*/\1/")
. Ensuite, je peux changer d'emplacement en fonction du vide ci-dessus.Dans l'ensemble, j'ai écrit un script pour accomplir cette tâche:
Le script obtient d'abord une liste de services à partir de la
networksetup
commande, puis vérifie si chaque service est en état actif à partir deifconfig
.Nommez le script
networkservice.sh
par exemple, puis exécutez-le pour obtenir le service réseau actuel sur lequel vous vous trouvez.la source
tac
parcourir les interfaces dans l'ordre inverse, car j'ai souvent le WiFi connecté ainsi qu'un adaptateur Ethernet USB (qui est le périphérique préféré dans le réseau). Dans ce cas, je veux que le dispositif actif le plus préféré soit imprimé:services=$(networksetup -listnetworkserviceorder | grep 'Hardware Port' | tac)
networksetup -listnetworkserviceorder
déjà "l'appareil le plus préféré" en premier ...tac
pour que les services ultérieurs (non préférés) ne soient pas écrasés$currentservice
. Aurait dû être plus clair dans ce commentaire original.La
scutil --dns
commande vous donne toutes les informations de routage réseau dont vous aurez besoin pour mapper les étiquettes d'interface matérielle aux itinéraires réseau.Un peu
awk
etgrep
peut le faire si vous avez besoin de scripter les informations ou de les réduire. Commencez par saisir "if_index" si vous êtes curieux.la source
Au cas où quelqu'un d'autre tomberait dessus comme je l'ai fait, le code ci-dessous pourrait être plus de ce que vous recherchez.
Ceci est de développer la réponse de PeterVP
Également visible sur https://www.kittell.net/code/mac-os-x-get-network-information/
la source
set public (dig +short myip.opendns.com @resolver1.opendns.com)
Mon raisonnement est qu'un serveur DNS (comme opendns) est moins susceptible d'être en panne qu'un site Web et est plus rapide. Et j'ai supprimé la déclaration de sommeil. Pas besoin d'attendre la réponse du serveur DNS. Temps d'exécution pour mon script 177 ms. Le vôtre prend 5,237 secondes, mais en fait bien sûr plus. Encore une grosse différence.Je ne prétendrai pas que la réponse à cette question soit triée, mais ceci, mais cela peut être utile.
Vous pouvez demander comment il acheminera actuellement les paquets vers quelque chose:
Et puis vous pouvez demander ce que "Network Service" gère cette interface:
Mais honnêtement, je doute qu'un «Network Services» soit un à un avec un port matériel. Et certaines interfaces, tun0 par exemple, n'ont pas de "service réseau". Eh bien au moins parfois, ils ne le font pas.
la source
Extrait de l' historique détaillé des connexions Wi-Fi depuis la ligne de commande de Mac OS X | OSXDaily :
Vous obtenez beaucoup d'informations sur l'historique des connexions, y compris les détails de la connexion actuelle.
Pas parfait, mais vous obtenez les informations que vous recherchez - et beaucoup plus d'informations supplémentaires!
la source
Voici un script de coquille de poisson que j'ai écrit:
Il affiche toutes les interfaces réseau actives et les données pertinentes.
Commentez ce que vous ne voulez pas / n'avez pas besoin
la source
echo_italic
fonction shell au lieu d'envelopper tous cesecho
s dans desset_color
appels.set_color
commandes peuvent être supprimées. Ils sont juste «décoratifs».set_color
commandes etJe ne sais pas si cela est utile à quiconque, mais comme je bricolais avec la même question, je suis arrivé à cette solution:
ifconfig | grep flags=8863 | grep -v bridge
La sortie ressemblera à ceci et ne répertorie que les ports Ethernet et wifi qui sont en cours d'utilisation:
Si vous souhaitez également voir l'adresse IPv4 attribuée:
ifconfig | grep 'flags=8863\|inet ' | grep -v 'bridge\|127.0.0.1'
Ce qui produit quelque chose comme ça;
Une autre alternative:
scutil --nwi
Ce qui montre les périphériques réseau en ligne, la dernière ligne montre en fait les interfaces réseau actuellement actives:
Le traitement ultérieur, si nécessaire, dépend de vous. :-)
Remarque:
Remarquez que je ne suis pas un expert des drapeaux (8863). Vous pouvez trouver les détails du drapeau dans le fichier d'en-tête if.h - Spotlight est votre ami pour trouver "if.h". J'ai trouvé le mien par exemple ici:
qui vous montrera ce que signifient les drapeaux (gardez à l'esprit: hexadécimal);
la source