Question:
Comment puis-je obtenir par programme et de manière fiable le nom de l'interface AirPort?
Robottinosino
2013-05-05 12:21:00 UTC
view on stackexchange narkive permalink

J'ai besoin des en0, en1, enN, en, quel que soit le nom de mon aéroport dans un script.

Comment puis-je l'obtenir de manière fiable?

Voici ce que j'ai rassemblé, mais il a l'air moche et cassant car il s'agit d'une "analyse de texte":

  airport_hardware_name = 'Hardware Port: Wi-Fi'networksetup -listallhardwareports | awk -v p = "$ nom_hardware_aéroport" '$ 0 ~ p {getline; imprimer 2 $; } ' 
Cinq réponses:
Lri
2013-05-05 14:07:10 UTC
view on stackexchange narkive permalink

Si vous devez prendre en charge d'anciennes versions d'OS X, le service de réseau Wi-Fi s'appelait Airport dans la version 10.6 et les versions antérieures.

networksetup -listallhardwareports | awk '/ ^ Port matériel: (Wi-Fi | AirPort) $ / {getline; print $ 2}'

Vous pouvez également utiliser -listnetworkserviceorder :

networksetup -listnetworkserviceorder | sed -En 's / ^ \ (Port matériel: (Wi-Fi | AirPort), Périphérique: (en.) \) $ / \ 2 / p'

Ou lire /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist :

ruby ​​-e 'require "plist"; met Plist :: parse_xml ("/ Library / Preferences / SystemConfiguration / NetworkInterfaces .plist ") [" Interfaces "]. select {| i | i [" SCNetworkInterfaceType "] ==" IEEE80211 "} [0] [" BSD Name "] '

vote positif pour la compatriote Snow Leopard! belle touche!
→ Lauri: la 2ème version ne fonctionne pas si l'interface sans fil est désactivée.
@danielAzuelos Voulez-vous dire comme lorsque le Wi-Fi est désactivé dans les Préférences Système? Cela a fonctionné pour moi même après avoir désactivé le Wi-Fi et redémarré.
→ Lauri: Je voulais dire quand j'utilise un emplacement dédié où il n'y a qu'Ethernet activé et défini. C'est une configuration que j'utilise quotidiennement pour analyser les problèmes de réseau.
markhunte
2013-05-05 15:05:38 UTC
view on stackexchange narkive permalink

Que diriez-vous de

  / usr / sbin / networksetup -listnetworkserviceorder | grep -i 'Wi-Fi \ | AirPort' | grep -iow fr.  
échoue pour en10, par exemple
Ne pensez pas que j'ai déjà vu un en10. Mais bon à savoir
che2cbs
2013-05-06 01:26:44 UTC
view on stackexchange narkive permalink

En jouant sur le thème de Lauri, Apple pourrait changer le nom des appareils Wi-Fi à un moment donné dans le futur:

  pour d dans `networksetup -listallhardwareports | awk '/ ^ Périphérique: / {print $ 2}' `; do networksetup -getairportpower $ d > / dev / null 2>&1 && echo "Périphérique Wi-Fi: $ {d}" done  

Puisque 'networksetup -getairportpower dev' lance un retour différent de zéro value quand dev n'est pas un appareil d'aéroport, nous pouvons trouver celui (s) qui fonctionne (s).

C'est le meilleur à ce jour .. fiabilité supplémentaire intégrée !! Super choses.
TJ Luoma
2013-05-08 02:46:15 UTC
view on stackexchange narkive permalink

Uniquement pour arrondir les réponses (pas pour suggérer qu'il y a quelque chose qui ne va pas avec les autres réponses, mais seulement pour montrer qu'il y a une autre façon de le faire), je vais jeter ceci:

Utilisez la commande airport trouvée dans:

  /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport  

qui est là depuis au moins 10,6. (Je le lie toujours à / usr / local / bin / chaque fois que je configure un nouveau Mac).

Un des avantages de airport signifie que vous n'avez pas besoin de savoir quelle est l'interface, car:

"Si aucune interface n'est spécifiée, l'aéroport utilisera la première interface AirPort du système."

Par conséquent, si j'exécute cette commande:

  airport prefs 2>&1  

J'obtiens cette sortie:

  Préférences AirPort pour en1: DisconnectOnLogout = NOUnable pour récupérer JoinModeUnable to retrieve JoinModeFallbackRememberRecentNetworks = NORequireAdminIBSS = NORequireAdminNetworkChange = NORequireAdminPowerToggle = NOWoWEnabled = YES  ce qui signifie que  nom de l'appareil en recherchant le dernier mot sur la première ligne, moins les deux points.  
  airport prefs 2>&1 | awk -F '' '/ pour / {print $ NF}' | tr -d ':'  
TJ Luoma
2013-05-16 23:55:38 UTC
view on stackexchange narkive permalink

J'ai trouvé accidentellement une autre façon de faire ceci:

networksetup -setairportpower enX off 2>&1 | awk -F '' '/: / {print $ NF}'

Comment / pourquoi cela fonctionne:

networksetup -setairportpower enX off

donne ce résultat:

enX n'est pas une interface Wi-Fi.

Désactivation de la seule interface d'aéroport trouvée: en1

Je ne sais pas si je le classerais haut en termes de fiabilité , mais je vais l'inclure ici en option.

(Fonctionne sur 10.8 .3.)



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...